Przeglądaj źródła

🩹 Media Change followup (#24302)

Followup to #24015
ellensp 3 lat temu
rodzic
commit
3e9fb34892
No account linked to committer's email address

+ 1
- 1
Marlin/src/HAL/SAMD51/HAL.cpp Wyświetl plik

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

517
     #define HAS_SHARED_MEDIA 1
517
     #define HAS_SHARED_MEDIA 1
518
   #endif
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
   // Extender cable doesn't support SD_DETECT_PIN
520
   // Extender cable doesn't support SD_DETECT_PIN
530
   #if ENABLED(NO_SD_DETECT)
521
   #if ENABLED(NO_SD_DETECT)
531
     #undef SD_DETECT_PIN
522
     #undef SD_DETECT_PIN
532
   #endif
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
   #if DISABLED(USB_FLASH_DRIVE_SUPPORT) || BOTH(MULTI_VOLUME, VOLUME_SD_ONBOARD)
542
   #if DISABLED(USB_FLASH_DRIVE_SUPPORT) || BOTH(MULTI_VOLUME, VOLUME_SD_ONBOARD)
535
     #if ENABLED(SDIO_SUPPORT)
543
     #if ENABLED(SDIO_SUPPORT)
536
       #define NEED_SD2CARD_SDIO 1
544
       #define NEED_SD2CARD_SDIO 1
539
     #endif
547
     #endif
540
   #endif
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
 #endif
554
 #endif
547
 
555
 
548
 /**
556
 /**

+ 2
- 1
Marlin/src/inc/SanityCheck.h Wyświetl plik

893
 /**
893
 /**
894
  * SD Card Settings
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
   #error "SD_DETECT_STATE must be set HIGH for SD on the ELB_FULL_GRAPHIC_CONTROLLER."
897
   #error "SD_DETECT_STATE must be set HIGH for SD on the ELB_FULL_GRAPHIC_CONTROLLER."
898
 #endif
898
 #endif
899
+#undef SD_CONNECTION_TYPICAL
899
 
900
 
900
 /**
901
 /**
901
  * SD File Sorting
902
  * SD File Sorting

+ 2
- 2
Marlin/src/lcd/extui/anycubic_i3mega/anycubic_i3mega_lcd.cpp Wyświetl plik

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

+ 1
- 3
Marlin/src/lcd/extui/dgus_reloaded/DGUSRxHandler.cpp Wyświetl plik

47
 
47
 
48
   if (vp.addr == DGUS_Addr::SCREENCHANGE_SD) {
48
   if (vp.addr == DGUS_Addr::SCREENCHANGE_SD) {
49
     #if ENABLED(SDSUPPORT)
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
       if (!ExtUI::isMediaInserted()) {
52
       if (!ExtUI::isMediaInserted()) {
55
         dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));
53
         dgus_screen_handler.SetStatusMessage(GET_TEXT_F(MSG_NO_MEDIA));

+ 1
- 2
Marlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp Wyświetl plik

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

+ 1
- 1
Marlin/src/lcd/marlinui.cpp Wyświetl plik

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

+ 2
- 2
Marlin/src/lcd/menu/menu_main.cpp Wyświetl plik

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

+ 1
- 1
Marlin/src/lcd/menu/menu_media.cpp Wyświetl plik

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

+ 10
- 9
Marlin/src/sd/cardreader.cpp Wyświetl plik

171
   workDirDepth = 0;
171
   workDirDepth = 0;
172
   ZERO(workDirParents);
172
   ZERO(workDirParents);
173
 
173
 
174
-  #if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_DETECT)
174
+  #if BOTH(SDSUPPORT, HAS_SD_DETECT)
175
     SET_INPUT_PULLUP(SD_DETECT_PIN);
175
     SET_INPUT_PULLUP(SD_DETECT_PIN);
176
   #endif
176
   #endif
177
 
177
 
456
 
456
 
457
   if (flag.mounted)
457
   if (flag.mounted)
458
     cdroot();
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
   ui.refresh();
465
   ui.refresh();
465
 }
466
 }
496
     if (TERN1(SD_IGNORE_AT_STARTUP, old_stat != 2)) mount();
497
     if (TERN1(SD_IGNORE_AT_STARTUP, old_stat != 2)) mount();
497
     if (!isMounted()) {             // Not mounted?
498
     if (!isMounted()) {             // Not mounted?
498
       stat = 0;
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
     TERN_(RESET_STEPPERS_ON_MEDIA_INSERT, reset_stepper_drivers()); // Workaround for Cheetah bug
505
     TERN_(RESET_STEPPERS_ON_MEDIA_INSERT, reset_stepper_drivers()); // Workaround for Cheetah bug
503
   }
506
   }
504
   else {
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
   ui.media_changed(old_stat, stat); // Update the UI or flag an error
511
   ui.media_changed(old_stat, stat); // Update the UI or flag an error

+ 1
- 1
Marlin/src/sd/cardreader.h Wyświetl plik

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

Ładowanie…
Anuluj
Zapisz