🧑💻 Specific SD / FD methods
This commit is contained in:
parent
5c0e8d594d
commit
06ef78dd19
13 changed files with 57 additions and 19 deletions
|
|
@ -820,9 +820,6 @@ void idle(const bool no_stepper_sleep/*=false*/) {
|
|||
// Handle SD Card insert / remove
|
||||
TERN_(HAS_MEDIA, card.manage_media());
|
||||
|
||||
// Handle USB Flash Drive insert / remove
|
||||
TERN_(HAS_USB_FLASH_DRIVE, card.diskIODriver()->idle());
|
||||
|
||||
// Announce Host Keepalive state (if any)
|
||||
TERN_(HOST_KEEPALIVE_FEATURE, gcode.host_keepalive());
|
||||
|
||||
|
|
|
|||
|
|
@ -432,8 +432,10 @@ void StatusScreen::onIdle() {
|
|||
}
|
||||
|
||||
void StatusScreen::onMediaMounted() {
|
||||
if (AT_SCREEN(StatusScreen))
|
||||
setStatusMessage(GET_TEXT_F(MSG_MEDIA_INSERTED));
|
||||
if (!AT_SCREEN(StatusScreen)) return;
|
||||
setStatusMessage(ExtUI::isMediaMountedSD() ? GET_TEXT_F(MSG_MEDIA_INSERTED_SD) :
|
||||
ExtUI::isMediaMountedUSB() ? GET_TEXT_F(MSG_MEDIA_INSERTED_USB) :
|
||||
GET_TEXT_F(MSG_MEDIA_INSERTED));
|
||||
}
|
||||
|
||||
void StatusScreen::onMediaRemoved() {
|
||||
|
|
|
|||
|
|
@ -588,8 +588,10 @@ bool StatusScreen::onTouchEnd(uint8_t tag) {
|
|||
}
|
||||
|
||||
void StatusScreen::onMediaMounted() {
|
||||
if (AT_SCREEN(StatusScreen))
|
||||
setStatusMessage(GET_TEXT_F(MSG_MEDIA_INSERTED));
|
||||
if (!AT_SCREEN(StatusScreen)) return;
|
||||
setStatusMessage(ExtUI::isMediaMountedSD() ? GET_TEXT_F(MSG_MEDIA_INSERTED_SD) :
|
||||
ExtUI::isMediaMountedUSB() ? GET_TEXT_F(MSG_MEDIA_INSERTED_USB) :
|
||||
GET_TEXT_F(MSG_MEDIA_INSERTED));
|
||||
}
|
||||
|
||||
void StatusScreen::onMediaRemoved() {
|
||||
|
|
|
|||
|
|
@ -1079,7 +1079,9 @@ namespace ExtUI {
|
|||
return isPrintingFromMedia() || printJobOngoing();
|
||||
}
|
||||
|
||||
bool isMediaMounted() { return TERN0(HAS_MEDIA, card.isMounted()); }
|
||||
bool isMediaMounted() { return card.isMounted(); }
|
||||
bool isMediaMountedSD() { return card.isSDCardMounted(); }
|
||||
bool isMediaMountedUSB() { return card.isFlashDriveMounted(); }
|
||||
|
||||
// Pause/Resume/Stop are implemented in MarlinUI
|
||||
void pausePrint() { ui.pause_print(); }
|
||||
|
|
|
|||
|
|
@ -464,6 +464,9 @@ namespace ExtUI {
|
|||
* Use these to operate on files
|
||||
*/
|
||||
bool isMediaMounted();
|
||||
bool isMediaMountedSD();
|
||||
bool isMediaMountedUSB();
|
||||
|
||||
bool isPrintingFromMediaPaused();
|
||||
bool isPrintingFromMedia();
|
||||
bool isPrinting();
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@
|
|||
|
||||
#if HAS_SDCARD && !HAS_USB_FLASH_DRIVE
|
||||
#define MEDIA_TYPE_EN "SD Card"
|
||||
#elif HAS_USB_FLASH_DRIVE
|
||||
#elif HAS_USB_FLASH_DRIVE && !HAS_SDCARD
|
||||
#define MEDIA_TYPE_EN "USB Drive"
|
||||
#else
|
||||
#define MEDIA_TYPE_EN "Media"
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
#if HAS_SDCARD && !HAS_USB_FLASH_DRIVE
|
||||
#define MEDIA_TYPE_ES "SD"
|
||||
#elif HAS_USB_FLASH_DRIVE
|
||||
#elif HAS_USB_FLASH_DRIVE && !HAS_SDCARD
|
||||
#define MEDIA_TYPE_ES "USB"
|
||||
#else
|
||||
#define MEDIA_TYPE_ES "SD/FD"
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
|
||||
#if HAS_SDCARD && !HAS_USB_FLASH_DRIVE
|
||||
#define MEDIA_TYPE_GL "SD"
|
||||
#elif HAS_USB_FLASH_DRIVE
|
||||
#elif HAS_USB_FLASH_DRIVE && !HAS_SDCARD
|
||||
#define MEDIA_TYPE_GL "FD"
|
||||
#else
|
||||
#define MEDIA_TYPE_GL "SD/FD"
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
#if HAS_SDCARD && !HAS_USB_FLASH_DRIVE
|
||||
#define MEDIA_TYPE_IT "SD"
|
||||
#elif HAS_USB_FLASH_DRIVE
|
||||
#elif HAS_USB_FLASH_DRIVE && !HAS_SDCARD
|
||||
#define MEDIA_TYPE_IT "USB"
|
||||
#else
|
||||
#define MEDIA_TYPE_IT "Media"
|
||||
|
|
|
|||
|
|
@ -1907,7 +1907,12 @@ uint8_t expand_u8str_P(char * const outstr, PGM_P const ptpl, const int8_t ind,
|
|||
quick_feedback();
|
||||
goto_screen(MEDIA_MENU_GATEWAY);
|
||||
#else
|
||||
LCD_MESSAGE(MSG_MEDIA_INSERTED);
|
||||
if (card.isSDCardSelected())
|
||||
LCD_MESSAGE(MSG_MEDIA_INSERTED_SD);
|
||||
else if (card.isFlashDriveSelected())
|
||||
LCD_MESSAGE(MSG_MEDIA_INSERTED_USB);
|
||||
else
|
||||
LCD_MESSAGE(MSG_MEDIA_INSERTED);
|
||||
#endif
|
||||
}
|
||||
else { // Media Removed
|
||||
|
|
|
|||
|
|
@ -501,7 +501,14 @@ void CardReader::mount() {
|
|||
cdroot();
|
||||
else {
|
||||
#if ANY(HAS_SD_DETECT, HAS_USB_FLASH_DRIVE)
|
||||
if (marlin_state != MarlinState::MF_INITIALIZING) LCD_ALERTMESSAGE(MSG_MEDIA_INIT_FAIL);
|
||||
if (marlin_state != MarlinState::MF_INITIALIZING) {
|
||||
if (isSDCardSelected())
|
||||
LCD_ALERTMESSAGE(MSG_MEDIA_INIT_FAIL_SD);
|
||||
else if (isFlashDriveSelected())
|
||||
LCD_ALERTMESSAGE(MSG_MEDIA_INIT_FAIL_USB);
|
||||
else
|
||||
LCD_ALERTMESSAGE(MSG_MEDIA_INIT_FAIL);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -516,6 +523,10 @@ void CardReader::mount() {
|
|||
* Handle SD card events
|
||||
*/
|
||||
void CardReader::manage_media() {
|
||||
#if HAS_USB_FLASH_DRIVE // Wrap for optimal non-virtual?
|
||||
driver->idle(); // Handle device tasks (e.g., USB Drive insert / remove)
|
||||
#endif
|
||||
|
||||
static uint8_t prev_stat = 2; // At boot we don't know if media is present or not
|
||||
uint8_t stat = uint8_t(isInserted());
|
||||
if (stat == prev_stat) return; // Already checked and still no change?
|
||||
|
|
|
|||
|
|
@ -143,10 +143,11 @@ public:
|
|||
}
|
||||
|
||||
/**
|
||||
* Media Detection - Inserted, Mounted, Job Running, Job Paused, etc.
|
||||
* Media Detection - Inserted and Mounted Media
|
||||
*
|
||||
* Marlin 2.1.x supports up to two drives, either an SD Card or USB-FD
|
||||
* Onboard SD may have SPI or SDIO interface. USB FD may use MSC.
|
||||
* Marlin 2.1.x supports up to two drives, either an SD Card or USB-FD.
|
||||
* SD Card may have SPI or SDIO interface.
|
||||
* SDIO / USB drives may be shared via MSC when not in use by Marlin.
|
||||
*/
|
||||
|
||||
// No card detect line? Assume the card is inserted.
|
||||
|
|
@ -169,8 +170,16 @@ public:
|
|||
// Mount and release physical media
|
||||
static void mount();
|
||||
static void release();
|
||||
|
||||
static bool isMounted() { return flag.mounted; }
|
||||
|
||||
static bool isSDCardMounted() {
|
||||
return isMounted() && isSDCardSelected();
|
||||
}
|
||||
static bool isFlashDriveMounted() {
|
||||
return isMounted() && isFlashDriveSelected();
|
||||
}
|
||||
|
||||
// Handle media insert/remove (including mounting on boot-up)
|
||||
static void manage_media();
|
||||
|
||||
|
|
@ -410,10 +419,17 @@ private:
|
|||
|
||||
class CardReader {
|
||||
public:
|
||||
static constexpr bool isFlashDriveInserted() { return false; }
|
||||
static constexpr bool isSDCardSelected() { return false; }
|
||||
static constexpr bool isFlashDriveSelected() { return false; }
|
||||
|
||||
static constexpr bool isSDCardInserted() { return false; }
|
||||
static constexpr bool isFlashDriveInserted() { return false; }
|
||||
static constexpr bool isInserted() { return false; }
|
||||
|
||||
static constexpr bool isSDCardMounted() { return false; }
|
||||
static constexpr bool isFlashDriveMounted() { return false; }
|
||||
static constexpr bool isMounted() { return false; }
|
||||
|
||||
static constexpr bool isStillPrinting() { return false; }
|
||||
static constexpr bool isStillFetching() { return false; }
|
||||
static constexpr bool isPaused() { return false; }
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
* 3 - perform block range checking
|
||||
* 4 - print each block access
|
||||
*/
|
||||
#define USB_DEBUG 1
|
||||
#define USB_DEBUG TERN(MARLIN_DEV_MODE, 1, 0)
|
||||
#define USB_STARTUP_DELAY 0
|
||||
|
||||
// uncomment to get 'printf' console debugging. NOT FOR UNO!
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue