Skip to content

Commit 118d9ab

Browse files
ellenspLCh-77
authored andcommitted
🩹 Media Change followup (MarlinFirmware#24302)
Followup to MarlinFirmware#24015
1 parent dc876d3 commit 118d9ab

File tree

11 files changed

+42
-35
lines changed

11 files changed

+42
-35
lines changed

Marlin/src/HAL/SAMD51/HAL.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ void MarlinHAL::dma_init() {
598598
void MarlinHAL::init() {
599599
TERN_(DMA_IS_REQUIRED, dma_init());
600600
#if ENABLED(SDSUPPORT)
601-
#if SD_CONNECTION_IS(ONBOARD) && PIN_EXISTS(SD_DETECT)
601+
#if HAS_SD_DETECT && SD_CONNECTION_IS(ONBOARD)
602602
SET_INPUT_PULLUP(SD_DETECT_PIN);
603603
#endif
604604
OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up

Marlin/src/inc/Conditionals_post.h

+20-12
Original file line numberDiff line numberDiff line change
@@ -517,20 +517,28 @@
517517
#define HAS_SHARED_MEDIA 1
518518
#endif
519519

520-
// Set SD_DETECT_STATE based on hardware if not overridden
521-
#if PIN_EXISTS(SD_DETECT) && !defined(SD_DETECT_STATE)
522-
#if BOTH(HAS_MARLINUI_MENU, ELB_FULL_GRAPHIC_CONTROLLER) && (SD_CONNECTION_IS(LCD) || !defined(SDCARD_CONNECTION))
523-
#define SD_DETECT_STATE HIGH
524-
#else
525-
#define SD_DETECT_STATE LOW
526-
#endif
527-
#endif
528-
529520
// Extender cable doesn't support SD_DETECT_PIN
530521
#if ENABLED(NO_SD_DETECT)
531522
#undef SD_DETECT_PIN
532523
#endif
533524

525+
// Not onboard or custom cable
526+
#if SD_CONNECTION_IS(LCD) || !defined(SDCARD_CONNECTION)
527+
#define SD_CONNECTION_TYPICAL 1
528+
#endif
529+
530+
// Set SD_DETECT_STATE based on hardware if not overridden
531+
#if PIN_EXISTS(SD_DETECT)
532+
#define HAS_SD_DETECT 1
533+
#ifndef SD_DETECT_STATE
534+
#if ALL(SD_CONNECTION_TYPICAL, HAS_MARLINUI_MENU, ELB_FULL_GRAPHIC_CONTROLLER)
535+
#define SD_DETECT_STATE HIGH
536+
#else
537+
#define SD_DETECT_STATE LOW
538+
#endif
539+
#endif
540+
#endif
541+
534542
#if DISABLED(USB_FLASH_DRIVE_SUPPORT) || BOTH(MULTI_VOLUME, VOLUME_SD_ONBOARD)
535543
#if ENABLED(SDIO_SUPPORT)
536544
#define NEED_SD2CARD_SDIO 1
@@ -539,10 +547,10 @@
539547
#endif
540548
#endif
541549

542-
#endif
550+
#if HAS_SD_DETECT && NONE(HAS_GRAPHICAL_TFT, LCD_USE_DMA_FSMC, HAS_FSMC_GRAPHICAL_TFT, HAS_SPI_GRAPHICAL_TFT, IS_DWIN_MARLINUI, EXTENSIBLE_UI, HAS_DWIN_E3V2)
551+
#define REINIT_NOISY_LCD 1 // Have the LCD re-init on SD insertion
552+
#endif
543553

544-
#if PIN_EXISTS(SD_DETECT) && NONE(HAS_GRAPHICAL_TFT, LCD_USE_DMA_FSMC, HAS_FSMC_GRAPHICAL_TFT, HAS_SPI_GRAPHICAL_TFT, IS_DWIN_MARLINUI, EXTENSIBLE_UI, HAS_DWIN_E3V2)
545-
#define REINIT_NOISY_LCD 1 // Have the LCD re-init on SD insertion
546554
#endif
547555

548556
/**

Marlin/src/inc/SanityCheck.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -893,9 +893,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
893893
/**
894894
* SD Card Settings
895895
*/
896-
#if ALL(SDSUPPORT, ELB_FULL_GRAPHIC_CONTROLLER, HAS_MARLINUI_MENU) && PIN_EXISTS(SD_DETECT) && SD_DETECT_STATE != HIGH && (SD_CONNECTION_IS(LCD) || !defined(SDCARD_CONNECTION))
896+
#if ALL(SDSUPPORT, HAS_SD_DETECT, SD_CONNECTION_TYPICAL, ELB_FULL_GRAPHIC_CONTROLLER, HAS_MARLINUI_MENU) && SD_DETECT_STATE == LOW
897897
#error "SD_DETECT_STATE must be set HIGH for SD on the ELB_FULL_GRAPHIC_CONTROLLER."
898898
#endif
899+
#undef SD_CONNECTION_TYPICAL
899900

900901
/**
901902
* SD File Sorting

Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ void AnycubicTFTClass::OnSetup() {
8686
delay_ms(10);
8787

8888
// Init the state of the key pins running on the TFT
89-
#if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
89+
#if BOTH(SDSUPPORT, HAS_SD_DETECT)
9090
SET_INPUT_PULLUP(SD_DETECT_PIN);
9191
#endif
9292
#if ENABLED(FILAMENT_RUNOUT_SENSOR)
@@ -916,7 +916,7 @@ void AnycubicTFTClass::GetCommandFromTFT() {
916916
}
917917

918918
void AnycubicTFTClass::DoSDCardStateCheck() {
919-
#if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
919+
#if BOTH(SDSUPPORT, HAS_SD_DETECT)
920920
bool isInserted = isMediaInserted();
921921
if (isInserted)
922922
SENDLINE_DBG_PGM("J00", "TFT Serial Debug: SD card state changed... isInserted");

Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp

+1-3
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) {
4747

4848
if (vp.addr == DGUS_Addr::SCREENCHANGE_SD) {
4949
#if ENABLED(SDSUPPORT)
50-
#if !PIN_EXISTS(SD_DETECT)
51-
card.mount();
52-
#endif
50+
IF_DISABLED(HAS_SD_DETECT, card.mount());
5351

5452
if (!ExtUI::isMediaInserted()) {
5553
dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));

Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,7 @@ void tft_lvgl_init() {
137137
uint16_t usb_flash_loop = 1000;
138138
#if ENABLED(MULTI_VOLUME) && !HAS_SD_HOST_DRIVE
139139
SET_INPUT_PULLUP(SD_DETECT_PIN);
140-
if (READ(SD_DETECT_PIN) == LOW) card.changeMedia(&card.media_driver_sdcard);
141-
else card.changeMedia(&card.media_driver_usbFlash);
140+
card.changeMedia(IS_SD_INSERTED() ? &card.media_driver_sdcard : &card.media_driver_usbFlash);
142141
#endif
143142
do {
144143
card.media_driver_usbFlash.idle();

Marlin/src/lcd/marlinui.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1756,7 +1756,7 @@ void MarlinUI::init() {
17561756
if (old_status < 2) {
17571757
#if ENABLED(EXTENSIBLE_UI)
17581758
ExtUI::onMediaRemoved();
1759-
#elif PIN_EXISTS(SD_DETECT)
1759+
#elif HAS_SD_DETECT
17601760
LCD_MESSAGE(MSG_MEDIA_REMOVED);
17611761
#if HAS_MARLINUI_MENU
17621762
if (!defer_return_to_status) return_to_status();

Marlin/src/lcd/menu/menu_main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ void menu_main() {
246246

247247
if (card_detected) {
248248
if (!card_open) {
249-
#if PIN_EXISTS(SD_DETECT)
249+
#if HAS_SD_DETECT
250250
GCODES_ITEM(MSG_CHANGE_MEDIA, F("M21")); // M21 Change Media
251251
#else // - or -
252252
ACTION_ITEM(MSG_RELEASE_MEDIA, []{ // M22 Release Media
@@ -262,7 +262,7 @@ void menu_main() {
262262
}
263263
}
264264
else {
265-
#if PIN_EXISTS(SD_DETECT)
265+
#if HAS_SD_DETECT
266266
ACTION_ITEM(MSG_NO_MEDIA, nullptr); // "No Media"
267267
#else
268268
GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21")); // M21 Attach Media

Marlin/src/lcd/menu/menu_media.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ void menu_media_filelist() {
122122
BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN) : GET_TEXT_F(MSG_BACK));
123123
#endif
124124
if (card.flag.workDirIsRoot) {
125-
#if !PIN_EXISTS(SD_DETECT)
125+
#if !HAS_SD_DETECT
126126
ACTION_ITEM(MSG_REFRESH, []{ encoderTopLine = 0; card.mount(); });
127127
#endif
128128
}

Marlin/src/sd/cardreader.cpp

+10-9
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ CardReader::CardReader() {
171171
workDirDepth = 0;
172172
ZERO(workDirParents);
173173

174-
#if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
174+
#if BOTH(SDSUPPORT, HAS_SD_DETECT)
175175
SET_INPUT_PULLUP(SD_DETECT_PIN);
176176
#endif
177177

@@ -456,10 +456,11 @@ void CardReader::mount() {
456456

457457
if (flag.mounted)
458458
cdroot();
459-
#if ENABLED(USB_FLASH_DRIVE_SUPPORT) || PIN_EXISTS(SD_DETECT)
460-
else if (marlin_state != MF_INITIALIZING)
461-
LCD_ALERTMESSAGE(MSG_MEDIA_INIT_FAIL);
462-
#endif
459+
else {
460+
#if EITHER(HAS_SD_DETECT, USB_FLASH_DRIVE_SUPPORT)
461+
if (marlin_state != MF_INITIALIZING) LCD_ALERTMESSAGE(MSG_MEDIA_INIT_FAIL);
462+
#endif
463+
}
463464

464465
ui.refresh();
465466
}
@@ -496,15 +497,15 @@ void CardReader::manage_media() {
496497
if (TERN1(SD_IGNORE_AT_STARTUP, old_stat != 2)) mount();
497498
if (!isMounted()) { // Not mounted?
498499
stat = 0;
499-
IF_DISABLED(SD_IGNORE_AT_STARTUP, prev_stat = 0);
500+
#if HAS_SD_DETECT && DISABLED(SD_IGNORE_AT_STARTUP)
501+
prev_stat = 0;
502+
#endif
500503
}
501504

502505
TERN_(RESET_STEPPERS_ON_MEDIA_INSERT, reset_stepper_drivers()); // Workaround for Cheetah bug
503506
}
504507
else {
505-
#if PIN_EXISTS(SD_DETECT)
506-
release(); // Card is released
507-
#endif
508+
TERN_(HAS_SD_DETECT, release()); // Card is released
508509
}
509510

510511
ui.media_changed(old_stat, stat); // Update the UI or flag an error

Marlin/src/sd/cardreader.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ class CardReader {
362362

363363
#if ENABLED(USB_FLASH_DRIVE_SUPPORT)
364364
#define IS_SD_INSERTED() DiskIODriver_USBFlash::isInserted()
365-
#elif PIN_EXISTS(SD_DETECT)
365+
#elif HAS_SD_DETECT
366366
#define IS_SD_INSERTED() (READ(SD_DETECT_PIN) == SD_DETECT_STATE)
367367
#else
368368
// No card detect line? Assume the card is inserted.

0 commit comments

Comments
 (0)