🔧 Apply DEFAULT_VOLUME on boot
This commit is contained in:
parent
99c29cd924
commit
85f6090f20
6 changed files with 64 additions and 23 deletions
|
|
@ -1960,7 +1960,8 @@
|
|||
#if ENABLED(MULTI_VOLUME)
|
||||
#define VOLUME_SD_ONBOARD
|
||||
#define VOLUME_USB_FLASH_DRIVE
|
||||
#define DEFAULT_SHARED_VOLUME SV_USB_FLASH_DRIVE
|
||||
#define DEFAULT_VOLUME SD_ONBOARD // :[ 'SD_ONBOARD', 'USB_FLASH_DRIVE' ]
|
||||
#define DEFAULT_SHARED_VOLUME USB_FLASH_DRIVE // :[ 'SD_ONBOARD', 'USB_FLASH_DRIVE' ]
|
||||
#endif
|
||||
|
||||
#endif // HAS_MEDIA
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@
|
|||
class Sd2CardUSBMscHandler : public USBMscHandler {
|
||||
public:
|
||||
DiskIODriver* diskIODriver() {
|
||||
// TODO: Explore a variable shared volume, or auto share the un-mounted volume(s)
|
||||
#if HAS_MULTI_VOLUME
|
||||
#if SHARED_VOLUME_IS(SD_ONBOARD)
|
||||
return &card.media_driver_sdcard;
|
||||
|
|
|
|||
|
|
@ -799,3 +799,31 @@
|
|||
#undef _POWERSTEP01
|
||||
#undef _TMC26X
|
||||
#undef _TMC26X_STANDALONE
|
||||
|
||||
#if ENABLED(MULTI_VOLUME)
|
||||
// Change to a generic ID without SV_ prefix
|
||||
#define SV_SD_ONBOARD 201
|
||||
#define SV_USB_FLASH_DRIVE 202
|
||||
#if DEFAULT_VOLUME_IS(SV_SD_ONBOARD) || SHARED_VOLUME_IS(SV_SD_ONBOARD)
|
||||
#error "SV_SD_ONBOARD is now SD_ONBOARD."
|
||||
#elif DEFAULT_VOLUME_IS(SV_USB_FLASH_DRIVE) || SHARED_VOLUME_IS(SV_USB_FLASH_DRIVE)
|
||||
#error "SV_USB_FLASH_DRIVE is now USB_FLASH_DRIVE."
|
||||
#endif
|
||||
// Skip less clear "bad value" errors in inc/SanityCheck.h
|
||||
#if DEFAULT_VOLUME_IS(SV_SD_ONBOARD)
|
||||
#undef DEFAULT_VOLUME
|
||||
#define DEFAULT_VOLUME SD_ONBOARD
|
||||
#elif DEFAULT_VOLUME_IS(SV_USB_FLASH_DRIVE)
|
||||
#undef DEFAULT_VOLUME
|
||||
#define DEFAULT_VOLUME USB_FLASH_DRIVE
|
||||
#endif
|
||||
#if SHARED_VOLUME_IS(SV_SD_ONBOARD)
|
||||
#undef DEFAULT_SHARED_VOLUME
|
||||
#define DEFAULT_SHARED_VOLUME SD_ONBOARD
|
||||
#elif SHARED_VOLUME_IS(SV_USB_FLASH_DRIVE)
|
||||
#undef DEFAULT_SHARED_VOLUME
|
||||
#define DEFAULT_SHARED_VOLUME USB_FLASH_DRIVE
|
||||
#endif
|
||||
#undef SV_SD_ONBOARD
|
||||
#undef SV_USB_FLASH_DRIVE
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1248,11 +1248,12 @@
|
|||
|
||||
#if ENABLED(MULTI_VOLUME)
|
||||
#define HAS_MULTI_VOLUME 1
|
||||
#define SV_SD_ONBOARD 101
|
||||
#define SV_USB_FLASH_DRIVE 102
|
||||
#define _VOLUME_ID(N) _CAT(SV_, N)
|
||||
#define SHARED_VOLUME_IS(N) (DEFAULT_SHARED_VOLUME == _VOLUME_ID(N))
|
||||
#define SD_ONBOARD 101
|
||||
#define USB_FLASH_DRIVE 102
|
||||
#define DEFAULT_VOLUME_IS(N) (DEFAULT_VOLUME == N)
|
||||
#define SHARED_VOLUME_IS(N) (DEFAULT_SHARED_VOLUME == N)
|
||||
#else
|
||||
#define DEFAULT_VOLUME_IS(...) 0
|
||||
#define SHARED_VOLUME_IS(...) 0
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -416,10 +416,20 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
|||
/**
|
||||
* SD Card Settings
|
||||
*/
|
||||
#if ALL(HAS_MEDIA, HAS_SD_DETECT, SD_CONNECTION_TYPICAL, ELB_FULL_GRAPHIC_CONTROLLER, HAS_MARLINUI_MENU) && SD_DETECT_STATE == LOW
|
||||
#error "SD_DETECT_STATE must be set HIGH for SD on the ELB_FULL_GRAPHIC_CONTROLLER."
|
||||
#if HAS_MEDIA
|
||||
#if HAS_MULTI_VOLUME
|
||||
#if !(DEFAULT_VOLUME_IS(SD_ONBOARD) || DEFAULT_VOLUME_IS(USB_FLASH_DRIVE))
|
||||
#error "DEFAULT_VOLUME must be either SD_ONBOARD or USB_FLASH_DRIVE."
|
||||
#endif
|
||||
#if !(SHARED_VOLUME_IS(SD_ONBOARD) || SHARED_VOLUME_IS(USB_FLASH_DRIVE))
|
||||
#error "DEFAULT_SHARED_VOLUME must be either SD_ONBOARD or USB_FLASH_DRIVE."
|
||||
#endif
|
||||
#endif
|
||||
#if ALL(ELB_FULL_GRAPHIC_CONTROLLER, HAS_MARLINUI_MENU, SD_CONNECTION_TYPICAL, HAS_SD_DETECT) && SD_DETECT_STATE == LOW
|
||||
#error "SD_DETECT_STATE must be set HIGH for SD on the ELB_FULL_GRAPHIC_CONTROLLER."
|
||||
#endif
|
||||
#undef SD_CONNECTION_TYPICAL
|
||||
#endif
|
||||
#undef SD_CONNECTION_TYPICAL
|
||||
|
||||
/**
|
||||
* SD File Sorting
|
||||
|
|
|
|||
|
|
@ -28,10 +28,6 @@
|
|||
|
||||
#if HAS_MEDIA
|
||||
|
||||
#if HAS_MULTI_VOLUME && !SHARED_VOLUME_IS(SD_ONBOARD) && !SHARED_VOLUME_IS(USB_FLASH_DRIVE)
|
||||
#error "DEFAULT_SHARED_VOLUME must be either SV_SD_ONBOARD or SV_USB_FLASH_DRIVE."
|
||||
#endif
|
||||
|
||||
//#define DEBUG_CARDREADER
|
||||
|
||||
#include "cardreader.h"
|
||||
|
|
@ -144,7 +140,13 @@ int16_t CardReader::nrItems = -1;
|
|||
DiskIODriver_USBFlash CardReader::media_driver_usbFlash;
|
||||
#endif
|
||||
|
||||
DiskIODriver* CardReader::driver = nullptr;
|
||||
DiskIODriver* CardReader::driver = (
|
||||
#if HAS_USB_FLASH_DRIVE && !DEFAULT_VOLUME_IS(SD_ONBOARD)
|
||||
&CardReader::media_driver_usbFlash
|
||||
#else
|
||||
&CardReader::media_driver_sdcard
|
||||
#endif
|
||||
);
|
||||
|
||||
MarlinVolume CardReader::volume;
|
||||
MediaFile CardReader::myfile;
|
||||
|
|
@ -158,12 +160,6 @@ MediaFile CardReader::myfile;
|
|||
uint32_t CardReader::filesize, CardReader::sdpos;
|
||||
|
||||
CardReader::CardReader() {
|
||||
#if HAS_USB_FLASH_DRIVE && !SHARED_VOLUME_IS(SD_ONBOARD)
|
||||
selectMediaFlashDrive();
|
||||
#else
|
||||
selectMediaSDCard();
|
||||
#endif
|
||||
|
||||
#if ENABLED(SDCARD_SORT_ALPHA)
|
||||
sort_count = 0;
|
||||
#if ENABLED(SDSORT_GCODE)
|
||||
|
|
@ -604,11 +600,15 @@ void CardReader::manage_media() {
|
|||
|
||||
// Try to mount the media (but not at boot if SD_IGNORE_AT_STARTUP)
|
||||
if (TERN1(SD_IGNORE_AT_STARTUP, old_stat > MEDIA_BOOT)) {
|
||||
// If both SD/FD mount simultaneously prefer the default
|
||||
#if HAS_MULTI_VOLUME
|
||||
if ((vadd & INSERT_SD) && !isSDCardSelected())
|
||||
selectMediaSDCard();
|
||||
if ((vadd & INSERT_USB) && !isFlashDriveSelected())
|
||||
selectMediaFlashDrive();
|
||||
#if HAS_USB_FLASH_DRIVE && !DEFAULT_VOLUME_IS(SD_ONBOARD)
|
||||
if (vadd & INSERT_USB) selectMediaFlashDrive();
|
||||
else if (vadd & INSERT_SD) selectMediaSDCard();
|
||||
#else
|
||||
if (vadd & INSERT_SD) selectMediaSDCard();
|
||||
else if (vadd & INSERT_USB) selectMediaFlashDrive();
|
||||
#endif
|
||||
#endif
|
||||
safe_delay(500); // Time for inserted media to settle. May re-enter for multiple media?
|
||||
mount();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue