Преглед изворни кода

🩹 Media Change followup (#24302)

Followup to #24015
ellensp пре 3 година
родитељ
комит
3e9fb34892
No account linked to committer's email address

+ 1
- 1
Marlin/src/HAL/SAMD51/HAL.cpp Прегледај датотеку

@@ -598,7 +598,7 @@ void MarlinHAL::dma_init() {
598 598
 void MarlinHAL::init() {
599 599
   TERN_(DMA_IS_REQUIRED, dma_init());
600 600
   #if ENABLED(SDSUPPORT)
601
-    #if SD_CONNECTION_IS(ONBOARD) && PIN_EXISTS(SD_DETECT)
601
+    #if HAS_SD_DETECT && SD_CONNECTION_IS(ONBOARD)
602 602
       SET_INPUT_PULLUP(SD_DETECT_PIN);
603 603
     #endif
604 604
     OUT_WRITE(SDSS, HIGH);  // Try to set SDSS inactive before any other SPI users start up

+ 20
- 12
Marlin/src/inc/Conditionals_post.h Прегледај датотеку

@@ -517,20 +517,28 @@
517 517
     #define HAS_SHARED_MEDIA 1
518 518
   #endif
519 519
 
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
-
529 520
   // Extender cable doesn't support SD_DETECT_PIN
530 521
   #if ENABLED(NO_SD_DETECT)
531 522
     #undef SD_DETECT_PIN
532 523
   #endif
533 524
 
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
+
534 542
   #if DISABLED(USB_FLASH_DRIVE_SUPPORT) || BOTH(MULTI_VOLUME, VOLUME_SD_ONBOARD)
535 543
     #if ENABLED(SDIO_SUPPORT)
536 544
       #define NEED_SD2CARD_SDIO 1
@@ -539,10 +547,10 @@
539 547
     #endif
540 548
   #endif
541 549
 
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
543 553
 
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
546 554
 #endif
547 555
 
548 556
 /**

+ 2
- 1
Marlin/src/inc/SanityCheck.h Прегледај датотеку

@@ -893,9 +893,10 @@ static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS
893 893
 /**
894 894
  * SD Card Settings
895 895
  */
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
897 897
   #error "SD_DETECT_STATE must be set HIGH for SD on the ELB_FULL_GRAPHIC_CONTROLLER."
898 898
 #endif
899
+#undef SD_CONNECTION_TYPICAL
899 900
 
900 901
 /**
901 902
  * SD File Sorting

+ 2
- 2
Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp Прегледај датотеку

@@ -86,7 +86,7 @@ void AnycubicTFTClass::OnSetup() {
86 86
   delay_ms(10);
87 87
 
88 88
   // 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)
90 90
     SET_INPUT_PULLUP(SD_DETECT_PIN);
91 91
   #endif
92 92
   #if ENABLED(FILAMENT_RUNOUT_SENSOR)
@@ -916,7 +916,7 @@ void AnycubicTFTClass::GetCommandFromTFT() {
916 916
 }
917 917
 
918 918
 void AnycubicTFTClass::DoSDCardStateCheck() {
919
-  #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
919
+  #if BOTH(SDSUPPORT, HAS_SD_DETECT)
920 920
     bool isInserted = isMediaInserted();
921 921
     if (isInserted)
922 922
       SENDLINE_DBG_PGM("J00", "TFT Serial Debug: SD card state changed... isInserted");

+ 1
- 3
Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp Прегледај датотеку

@@ -47,9 +47,7 @@ void DGUSRxHandler::ScreenChange(DGUS_VP &vp, void *data_ptr) {
47 47
 
48 48
   if (vp.addr == DGUS_Addr::SCREENCHANGE_SD) {
49 49
     #if ENABLED(SDSUPPORT)
50
-      #if !PIN_EXISTS(SD_DETECT)
51
-        card.mount();
52
-      #endif
50
+      IF_DISABLED(HAS_SD_DETECT, card.mount());
53 51
 
54 52
       if (!ExtUI::isMediaInserted()) {
55 53
         dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));

+ 1
- 2
Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp Прегледај датотеку

@@ -137,8 +137,7 @@ void tft_lvgl_init() {
137 137
     uint16_t usb_flash_loop = 1000;
138 138
     #if ENABLED(MULTI_VOLUME) && !HAS_SD_HOST_DRIVE
139 139
       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);
142 141
     #endif
143 142
     do {
144 143
       card.media_driver_usbFlash.idle();

+ 1
- 1
Marlin/src/lcd/marlinui.cpp Прегледај датотеку

@@ -1756,7 +1756,7 @@ void MarlinUI::init() {
1756 1756
       if (old_status < 2) {
1757 1757
         #if ENABLED(EXTENSIBLE_UI)
1758 1758
           ExtUI::onMediaRemoved();
1759
-        #elif PIN_EXISTS(SD_DETECT)
1759
+        #elif HAS_SD_DETECT
1760 1760
           LCD_MESSAGE(MSG_MEDIA_REMOVED);
1761 1761
           #if HAS_MARLINUI_MENU
1762 1762
             if (!defer_return_to_status) return_to_status();

+ 2
- 2
Marlin/src/lcd/menu/menu_main.cpp Прегледај датотеку

@@ -246,7 +246,7 @@ void menu_main() {
246 246
 
247 247
       if (card_detected) {
248 248
         if (!card_open) {
249
-          #if PIN_EXISTS(SD_DETECT)
249
+          #if HAS_SD_DETECT
250 250
             GCODES_ITEM(MSG_CHANGE_MEDIA, F("M21"));        // M21 Change Media
251 251
           #else                                             // - or -
252 252
             ACTION_ITEM(MSG_RELEASE_MEDIA, []{              // M22 Release Media
@@ -262,7 +262,7 @@ void menu_main() {
262 262
         }
263 263
       }
264 264
       else {
265
-        #if PIN_EXISTS(SD_DETECT)
265
+        #if HAS_SD_DETECT
266 266
           ACTION_ITEM(MSG_NO_MEDIA, nullptr);               // "No Media"
267 267
         #else
268 268
           GCODES_ITEM(MSG_ATTACH_MEDIA, F("M21"));          // M21 Attach Media

+ 1
- 1
Marlin/src/lcd/menu/menu_media.cpp Прегледај датотеку

@@ -122,7 +122,7 @@ void menu_media_filelist() {
122 122
     BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN) : GET_TEXT_F(MSG_BACK));
123 123
   #endif
124 124
   if (card.flag.workDirIsRoot) {
125
-    #if !PIN_EXISTS(SD_DETECT)
125
+    #if !HAS_SD_DETECT
126 126
       ACTION_ITEM(MSG_REFRESH, []{ encoderTopLine = 0; card.mount(); });
127 127
     #endif
128 128
   }

+ 10
- 9
Marlin/src/sd/cardreader.cpp Прегледај датотеку

@@ -171,7 +171,7 @@ CardReader::CardReader() {
171 171
   workDirDepth = 0;
172 172
   ZERO(workDirParents);
173 173
 
174
-  #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
174
+  #if BOTH(SDSUPPORT, HAS_SD_DETECT)
175 175
     SET_INPUT_PULLUP(SD_DETECT_PIN);
176 176
   #endif
177 177
 
@@ -456,10 +456,11 @@ void CardReader::mount() {
456 456
 
457 457
   if (flag.mounted)
458 458
     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
+  }
463 464
 
464 465
   ui.refresh();
465 466
 }
@@ -496,15 +497,15 @@ void CardReader::manage_media() {
496 497
     if (TERN1(SD_IGNORE_AT_STARTUP, old_stat != 2)) mount();
497 498
     if (!isMounted()) {             // Not mounted?
498 499
       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
500 503
     }
501 504
 
502 505
     TERN_(RESET_STEPPERS_ON_MEDIA_INSERT, reset_stepper_drivers()); // Workaround for Cheetah bug
503 506
   }
504 507
   else {
505
-    #if PIN_EXISTS(SD_DETECT)
506
-      release();                    // Card is released
507
-    #endif
508
+    TERN_(HAS_SD_DETECT, release()); // Card is released
508 509
   }
509 510
 
510 511
   ui.media_changed(old_stat, stat); // Update the UI or flag an error

+ 1
- 1
Marlin/src/sd/cardreader.h Прегледај датотеку

@@ -362,7 +362,7 @@ private:
362 362
 
363 363
 #if ENABLED(USB_FLASH_DRIVE_SUPPORT)
364 364
   #define IS_SD_INSERTED() DiskIODriver_USBFlash::isInserted()
365
-#elif PIN_EXISTS(SD_DETECT)
365
+#elif HAS_SD_DETECT
366 366
   #define IS_SD_INSERTED() (READ(SD_DETECT_PIN) == SD_DETECT_STATE)
367 367
 #else
368 368
   // No card detect line? Assume the card is inserted.

Loading…
Откажи
Сачувај