Skip to content

Commit 2b4284d

Browse files
rhapsodyvthinkyhead
authored andcommitted
✨ MULTI_VOLUME for Color UI and MarlinUI (MarlinFirmware#22004)
1 parent d84e2d6 commit 2b4284d

File tree

6 files changed

+45
-22
lines changed

6 files changed

+45
-22
lines changed

Marlin/src/HAL/STM32/msc_sd.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ class Sd2CardUSBMscHandler : public USBMscHandler {
3333
DiskIODriver* diskIODriver() {
3434
#if ENABLED(MULTI_VOLUME)
3535
#if SHARED_VOLUME_IS(SD_ONBOARD)
36-
return &card.media_sd_spi;
36+
return &card.media_driver_sdcard;
3737
#elif SHARED_VOLUME_IS(USB_FLASH_DRIVE)
38-
return &card.media_usbFlashDrive;
38+
return &card.media_driver_usbFlash;
3939
#endif
4040
#else
4141
return card.diskIODriver();

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_usbFlashDrive); break;
50-
case ID_T_SD_DISK: card.changeMedia(&card.media_sd_spi); break;
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;
5151
case ID_T_RETURN:
5252
TERN_(MKS_TEST, curent_disp_ui = 1);
5353
lv_draw_ready_print();

Marlin/src/lcd/language/language_en.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,9 @@ namespace Language_en {
740740
PROGMEM Language_Str MSG_CALIBRATION_FAILED = _UxGT("Calibration Failed");
741741

742742
PROGMEM Language_Str MSG_DRIVER_BACKWARD = _UxGT(" driver backward");
743+
744+
PROGMEM Language_Str MSG_SD_CARD = _UxGT("SD Card");
745+
PROGMEM Language_Str MSG_USB_DISK = _UxGT("USB Disk");
743746
}
744747

745748
#if FAN_COUNT == 1

Marlin/src/lcd/menu/menu_media.cpp

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ class MenuItem_sdfolder : public MenuItem_sdbase {
104104
}
105105
};
106106

107-
void menu_media() {
107+
void menu_media_filelist() {
108108
ui.encoder_direction_menus();
109109

110110
#if HAS_MARLINUI_U8GLIB
@@ -115,7 +115,11 @@ void menu_media() {
115115
#endif
116116

117117
START_MENU();
118-
BACK_ITEM_P(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT(MSG_MAIN) : GET_TEXT(MSG_BACK));
118+
#if ENABLED(MULTI_VOLUME)
119+
ACTION_ITEM(MSG_BACK, []{ ui.goto_screen(menu_media); });
120+
#else
121+
BACK_ITEM_P(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT(MSG_MAIN) : GET_TEXT(MSG_BACK));
122+
#endif
119123
if (card.flag.workDirIsRoot) {
120124
#if !PIN_EXISTS(SD_DETECT)
121125
ACTION_ITEM(MSG_REFRESH, []{ encoderTopLine = 0; card.mount(); });
@@ -138,4 +142,22 @@ void menu_media() {
138142
END_MENU();
139143
}
140144

145+
#if ENABLED(MULTI_VOLUME)
146+
void menu_media_select() {
147+
START_MENU();
148+
BACK_ITEM_P(TERN1(BROWSE_MEDIA_ON_INSERT, screen_history_depth) ? GET_TEXT(MSG_MAIN) : GET_TEXT(MSG_BACK));
149+
#if ENABLED(VOLUME_SD_ONBOARD)
150+
ACTION_ITEM(MSG_SD_CARD, []{ card.changeMedia(&card.media_driver_sdcard); card.mount(); ui.goto_screen(menu_media_filelist); });
151+
#endif
152+
#if ENABLED(VOLUME_USB_FLASH_DRIVE)
153+
ACTION_ITEM(MSG_USB_DISK, []{ card.changeMedia(&card.media_driver_usbFlash); card.mount(); ui.goto_screen(menu_media_filelist); });
154+
#endif
155+
END_MENU();
156+
}
157+
#endif
158+
159+
void menu_media() {
160+
TERN(MULTI_VOLUME, menu_media_select, menu_media_filelist)();
161+
}
162+
141163
#endif // HAS_LCD_MENU && SDSUPPORT

Marlin/src/sd/cardreader.cpp

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,12 @@ uint8_t CardReader::workDirDepth;
121121

122122
#endif // SDCARD_SORT_ALPHA
123123

124-
#if SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT)
125-
DiskIODriver_USBFlash CardReader::media_usbFlashDrive;
124+
#if HAS_USB_FLASH_DRIVE
125+
DiskIODriver_USBFlash CardReader::media_driver_usbFlash;
126126
#endif
127-
#if NEED_SD2CARD_SDIO
128-
DiskIODriver_SDIO CardReader::media_sdio;
129-
#elif NEED_SD2CARD_SPI
130-
DiskIODriver_SPI_SD CardReader::media_sd_spi;
127+
128+
#if NEED_SD2CARD_SDIO || NEED_SD2CARD_SPI
129+
CardReader::sdcard_driver_t CardReader::media_driver_sdcard;
131130
#endif
132131

133132
DiskIODriver* CardReader::driver = nullptr;
@@ -144,12 +143,10 @@ uint32_t CardReader::filesize, CardReader::sdpos;
144143

145144
CardReader::CardReader() {
146145
changeMedia(&
147-
#if SHARED_VOLUME_IS(SD_ONBOARD)
148-
TERN(SDIO_SUPPORT, media_sdio, media_sd_spi)
149-
#elif SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT)
150-
media_usbFlashDrive
146+
#if HAS_USB_FLASH_DRIVE && !SHARED_VOLUME_IS(SD_ONBOARD)
147+
media_driver_usbFlash
151148
#else
152-
TERN(SDIO_SUPPORT, media_sdio, media_sd_spi)
149+
media_driver_sdcard
153150
#endif
154151
);
155152

Marlin/src/sd/cardreader.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -235,12 +235,13 @@ class CardReader {
235235
#endif
236236

237237
#if SHARED_VOLUME_IS(USB_FLASH_DRIVE) || ENABLED(USB_FLASH_DRIVE_SUPPORT)
238-
static DiskIODriver_USBFlash media_usbFlashDrive;
238+
#define HAS_USB_FLASH_DRIVE 1
239+
static DiskIODriver_USBFlash media_driver_usbFlash;
239240
#endif
240-
#if NEED_SD2CARD_SDIO
241-
static DiskIODriver_SDIO media_sdio;
242-
#elif NEED_SD2CARD_SPI
243-
static DiskIODriver_SPI_SD media_sd_spi;
241+
242+
#if NEED_SD2CARD_SDIO || NEED_SD2CARD_SPI
243+
typedef TERN(NEED_SD2CARD_SDIO, DiskIODriver_SDIO, DiskIODriver_SPI_SD) sdcard_driver_t;
244+
static sdcard_driver_t media_driver_sdcard;
244245
#endif
245246

246247
private:

0 commit comments

Comments
 (0)