Skip to content

Commit d166678

Browse files
committed
πŸ§‘β€πŸ’» Clarify some SD / FD build flags
1 parent 62f2b8f commit d166678

File tree

12 files changed

+189
-135
lines changed

12 files changed

+189
-135
lines changed

β€ŽMarlin/src/gcode/sd/M21_M22.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ void GcodeSuite::M21() {
3838
#if HAS_MULTI_VOLUME
3939
const int8_t vol = parser.intval('P', -1);
4040
if (vol == 0 || parser.seen_test('S')) // "S" for SD Card
41-
card.changeMedia(&card.media_driver_sdcard);
41+
card.selectMediaSDCard();
4242
else if (vol == 1 || parser.seen_test('U')) // "U" for USB
43-
card.changeMedia(&card.media_driver_usbFlash);
43+
card.selectMediaFlashDrive();
4444
#endif
4545
card.mount();
4646
}

β€ŽMarlin/src/inc/Conditionals-4-adv.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,10 +1248,17 @@
12481248

12491249
#if ENABLED(MULTI_VOLUME)
12501250
#define HAS_MULTI_VOLUME 1
1251+
#define SV_SD_ONBOARD 101
1252+
#define SV_USB_FLASH_DRIVE 102
1253+
#define _VOLUME_ID(N) _CAT(SV_, N)
1254+
#define SHARED_VOLUME_IS(N) (DEFAULT_SHARED_VOLUME == _VOLUME_ID(N))
1255+
#else
1256+
#define SHARED_VOLUME_IS(...) 0
12511257
#endif
1252-
#if ENABLED(USB_FLASH_DRIVE_SUPPORT)
1258+
1259+
#if ANY(USB_FLASH_DRIVE_SUPPORT, VOLUME_USB_FLASH_DRIVE)
12531260
#define HAS_USB_FLASH_DRIVE 1
1254-
#if NONE(USE_OTG_USB_HOST, USE_UHS3_USB)
1261+
#if NONE(USE_OTG_USB_HOST, USE_UHS2_USB, USE_UHS3_USB)
12551262
#define USE_UHS2_USB
12561263
#endif
12571264
#endif

β€ŽMarlin/src/inc/Conditionals-5-post.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,9 @@
550550
#endif
551551
#endif
552552

553+
// Tests indicating a single or multi-volume SD Card
553554
#if !HAS_USB_FLASH_DRIVE || ALL(HAS_MULTI_VOLUME, VOLUME_SD_ONBOARD)
555+
#define HAS_SDCARD 1
554556
#if ENABLED(ONBOARD_SDIO)
555557
#define NEED_SD2CARD_SDIO 1
556558
#else

β€ŽMarlin/src/inc/SanityCheck.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3943,7 +3943,7 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive."
39433943

39443944
#if HAS_USB_FLASH_DRIVE && DISABLED(USE_OTG_USB_HOST) && !PINS_EXIST(USB_CS, USB_INTR)
39453945
#error "USB_CS_PIN and USB_INTR_PIN (or USE_OTG_USB_HOST) are required for USB_FLASH_DRIVE_SUPPORT."
3946-
#elif ENABLED(USE_OTG_USB_HOST) && !defined(HAS_OTG_USB_HOST_SUPPORT)
3946+
#elif ENABLED(USE_OTG_USB_HOST) && DISABLED(HAS_OTG_USB_HOST_SUPPORT)
39473947
#error "The current board does not support USE_OTG_USB_HOST."
39483948
#endif
39493949

β€ŽMarlin/src/lcd/extui/mks_ui/draw_media_select.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ static void event_handler(lv_obj_t *obj, lv_event_t event) {
4646
if (event != LV_EVENT_RELEASED) return;
4747
lv_clear_media_select();
4848
switch (obj->mks_obj_id) {
49-
case ID_T_USB_DISK: card.changeMedia(&card.media_driver_usbFlash); break;
50-
case ID_T_SD_DISK: card.changeMedia(&card.media_driver_sdcard); break;
49+
case ID_T_USB_DISK: card.selectMediaFlashDrive(); break;
50+
case ID_T_SD_DISK: card.selectMediaSDCard(); break;
5151
case ID_T_RETURN:
5252
TERN_(MKS_TEST, current_disp_ui = 1);
5353
lv_draw_ready_print();

β€ŽMarlin/src/lcd/extui/mks_ui/tft_lvgl_configuration.cpp

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -135,18 +135,19 @@ void tft_lvgl_init() {
135135
hal.watchdog_refresh(); // LVGL init takes time
136136

137137
#if HAS_USB_FLASH_DRIVE
138-
uint16_t usb_flash_loop = 1000;
139138
#if HAS_MULTI_VOLUME && !HAS_SD_HOST_DRIVE
140139
if (IS_SD_INSERTED())
141-
card.changeMedia(&card.media_driver_sdcard);
140+
card.selectMediaSDCard();
142141
else
143-
card.changeMedia(&card.media_driver_usbFlash);
142+
card.selectMediaFlashDrive();
144143
#endif
145-
do {
146-
card.media_driver_usbFlash.idle();
144+
// Wait up to two seconds for USB Drive to mount
145+
for (uint16_t usb_flash_loop = 500; --usb_flash_loop;) {
147146
hal.watchdog_refresh();
148-
delay(2);
149-
} while (!card.media_driver_usbFlash.isInserted() && usb_flash_loop--);
147+
card.media_driver_usbFlash.idle();
148+
delay(4);
149+
if (card.media_driver_usbFlash.isInserted()) break;
150+
}
150151
card.mount();
151152
#elif HAS_LOGO_IN_FLASH
152153
delay(1000);

β€ŽMarlin/src/lcd/marlinui.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1114,7 +1114,7 @@ void MarlinUI::init() {
11141114
#if MARLINUI_SCROLL_NAME
11151115
// If scrolling of long file names is enabled and we are in the sd card menu,
11161116
// cause a refresh to occur until all the text has scrolled into view.
1117-
if (currentScreen == menu_media_filelist && filename_scroll_max && !lcd_status_update_delay--) {
1117+
if (currentScreen == menu_file_selector && filename_scroll_max && !lcd_status_update_delay--) {
11181118
lcd_status_update_delay = ++filename_scroll_pos >= filename_scroll_max ? 12 : 4; // Long delay at end and start
11191119
if (filename_scroll_pos > filename_scroll_max) filename_scroll_pos = 0;
11201120
refresh(LCDVIEW_REDRAW_NOW);

β€ŽMarlin/src/lcd/menu/menu.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ void menu_main();
211211
void menu_move();
212212

213213
#if HAS_MEDIA
214-
void menu_media_filelist();
214+
void menu_file_selector();
215215
void menu_media();
216216
#endif
217217

β€ŽMarlin/src/lcd/menu/menu_media.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ void lcd_sd_updir() {
4545

4646
void MarlinUI::reselect_last_file() {
4747
if (sd_encoder_position == 0xFFFF) return;
48-
goto_screen(menu_media_filelist, sd_encoder_position, sd_top_line, sd_items);
48+
goto_screen(menu_file_selector, sd_encoder_position, sd_top_line, sd_items);
4949
sd_encoder_position = 0xFFFF;
5050
defer_status_screen();
5151
}
@@ -105,26 +105,26 @@ class MenuItem_sdfolder : public MenuItem_sdbase {
105105
void menu_media_select() {
106106
START_MENU();
107107
BACK_ITEM_F(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT_F(MSG_MAIN_MENU) : GET_TEXT_F(MSG_BACK));
108-
#if ENABLED(VOLUME_SD_ONBOARD)
109-
ACTION_ITEM(MSG_SD_CARD, []{ card.changeMedia(&card.media_driver_sdcard); card.mount(); ui.goto_screen(menu_media_filelist); });
108+
#if HAS_SDCARD
109+
ACTION_ITEM(MSG_SD_CARD, []{ card.selectMediaSDCard(); card.mount(); ui.goto_screen(menu_file_selector); });
110110
#endif
111-
#if ENABLED(VOLUME_USB_FLASH_DRIVE)
112-
ACTION_ITEM(MSG_USB_DISK, []{ card.changeMedia(&card.media_driver_usbFlash); card.mount(); ui.goto_screen(menu_media_filelist); });
111+
#if HAS_USB_FLASH_DRIVE
112+
ACTION_ITEM(MSG_USB_DISK, []{ card.selectMediaFlashDrive(); card.mount(); ui.goto_screen(menu_file_selector); });
113113
#endif
114114
END_MENU();
115115
}
116116
#endif
117117

118118
/**
119119
* "Select From Media" menu item. Depending on single or multiple drives:
120-
* - menu_media_filelist - List files on the current media
121-
* - menu_media_select - Select one of the attached drives, then go to the file list
120+
* - menu_file_selector - List files on the current media
121+
* - menu_media_select - Select one of the attached drives, then go to the file list
122122
*/
123123
void menu_media() {
124-
ui.goto_screen(TERN(HAS_MULTI_VOLUME, menu_media_select, menu_media_filelist));
124+
ui.goto_screen(TERN(HAS_MULTI_VOLUME, menu_media_select, menu_file_selector));
125125
}
126126

127-
void menu_media_filelist() {
127+
void menu_file_selector() {
128128
ui.encoder_direction_menus();
129129

130130
#if HAS_MARLINUI_U8GLIB

β€ŽMarlin/src/sd/cardreader.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828

2929
#if HAS_MEDIA
3030

31+
#if HAS_MULTI_VOLUME && !SHARED_VOLUME_IS(SD_ONBOARD) && !SHARED_VOLUME_IS(USB_FLASH_DRIVE)
32+
#error "DEFAULT_SHARED_VOLUME must be either SV_SD_ONBOARD or SV_USB_FLASH_DRIVE."
33+
#endif
34+
3135
//#define DEBUG_CARDREADER
3236

3337
#include "cardreader.h"
@@ -132,12 +136,12 @@ int16_t CardReader::nrItems = -1;
132136

133137
#endif // SDCARD_SORT_ALPHA
134138

135-
#if HAS_USB_FLASH_DRIVE
136-
DiskIODriver_USBFlash CardReader::media_driver_usbFlash;
139+
#if HAS_SDCARD
140+
CardReader::sdcard_driver_t CardReader::media_driver_sdcard;
137141
#endif
138142

139-
#if NEED_SD2CARD_SDIO || NEED_SD2CARD_SPI
140-
CardReader::sdcard_driver_t CardReader::media_driver_sdcard;
143+
#if HAS_USB_FLASH_DRIVE
144+
DiskIODriver_USBFlash CardReader::media_driver_usbFlash;
141145
#endif
142146

143147
DiskIODriver* CardReader::driver = nullptr;
@@ -153,13 +157,11 @@ MediaFile CardReader::file;
153157
uint32_t CardReader::filesize, CardReader::sdpos;
154158

155159
CardReader::CardReader() {
156-
changeMedia(&
157-
#if HAS_USB_FLASH_DRIVE && !SHARED_VOLUME_IS(SD_ONBOARD)
158-
media_driver_usbFlash
159-
#else
160-
media_driver_sdcard
161-
#endif
162-
);
160+
#if HAS_USB_FLASH_DRIVE && !SHARED_VOLUME_IS(SD_ONBOARD)
161+
selectMediaFlashDrive();
162+
#else
163+
selectMediaSDCard();
164+
#endif
163165

164166
#if ENABLED(SDCARD_SORT_ALPHA)
165167
sort_count = 0;

0 commit comments

Comments
Β (0)