Commit b63be37b authored by Damien George's avatar Damien George
Browse files

stmhal: In safe mode, still mount SD card and present as MSD over USB.

It's still "safe" because no scripts are run.  Remove the SD card if you
want to access the internal flash filesystem.  Addresses issue #616.

Also: remove obsolete pyb.source_dir setting, and reset pyb.main and
pyb.usb_mode settings on soft-reset.
parent b0accc85
...@@ -127,26 +127,15 @@ void disable_irq(void) { ...@@ -127,26 +127,15 @@ void disable_irq(void) {
__disable_irq(); __disable_irq();
} }
STATIC mp_obj_t pyb_config_source_dir = MP_OBJ_NULL;
STATIC mp_obj_t pyb_config_main = MP_OBJ_NULL; STATIC mp_obj_t pyb_config_main = MP_OBJ_NULL;
STATIC mp_obj_t pyb_config_usb_mode = MP_OBJ_NULL; STATIC mp_obj_t pyb_config_usb_mode = MP_OBJ_NULL;
STATIC mp_obj_t pyb_source_dir(mp_obj_t source_dir) {
if (MP_OBJ_IS_STR(source_dir)) {
pyb_config_source_dir = source_dir;
}
return mp_const_none;
}
MP_DEFINE_CONST_FUN_OBJ_1(pyb_source_dir_obj, pyb_source_dir);
STATIC mp_obj_t pyb_main(mp_obj_t main) { STATIC mp_obj_t pyb_main(mp_obj_t main) {
if (MP_OBJ_IS_STR(main)) { if (MP_OBJ_IS_STR(main)) {
pyb_config_main = main; pyb_config_main = main;
} }
return mp_const_none; return mp_const_none;
} }
MP_DEFINE_CONST_FUN_OBJ_1(pyb_main_obj, pyb_main); MP_DEFINE_CONST_FUN_OBJ_1(pyb_main_obj, pyb_main);
STATIC mp_obj_t pyb_usb_mode(mp_obj_t usb_mode) { STATIC mp_obj_t pyb_usb_mode(mp_obj_t usb_mode) {
...@@ -155,7 +144,6 @@ STATIC mp_obj_t pyb_usb_mode(mp_obj_t usb_mode) { ...@@ -155,7 +144,6 @@ STATIC mp_obj_t pyb_usb_mode(mp_obj_t usb_mode) {
} }
return mp_const_none; return mp_const_none;
} }
MP_DEFINE_CONST_FUN_OBJ_1(pyb_usb_mode_obj, pyb_usb_mode); MP_DEFINE_CONST_FUN_OBJ_1(pyb_usb_mode_obj, pyb_usb_mode);
static const char fresh_boot_py[] = static const char fresh_boot_py[] =
...@@ -444,7 +432,7 @@ soft_reset: ...@@ -444,7 +432,7 @@ soft_reset:
#if MICROPY_HW_HAS_SDCARD #if MICROPY_HW_HAS_SDCARD
// if an SD card is present then mount it on /sd/ // if an SD card is present then mount it on /sd/
if (reset_mode == 1 && sdcard_is_present()) { if (sdcard_is_present()) {
FRESULT res = f_mount(&fatfs1, "/sd", 1); FRESULT res = f_mount(&fatfs1, "/sd", 1);
if (res != FR_OK) { if (res != FR_OK) {
printf("[SD] could not mount SD card\n"); printf("[SD] could not mount SD card\n");
...@@ -466,7 +454,12 @@ soft_reset: ...@@ -466,7 +454,12 @@ soft_reset:
} }
#endif #endif
// reset config variables; they should be set by boot.py
pyb_config_main = MP_OBJ_NULL;
pyb_config_usb_mode = MP_OBJ_NULL;
// run boot.py, if it exists // run boot.py, if it exists
// TODO perhaps have pyb.reboot([bootpy]) function to soft-reboot and execute custom boot.py
if (reset_mode == 1) { if (reset_mode == 1) {
const char *boot_py = "boot.py"; const char *boot_py = "boot.py";
FRESULT res = f_stat(boot_py, NULL); FRESULT res = f_stat(boot_py, NULL);
...@@ -491,17 +484,14 @@ soft_reset: ...@@ -491,17 +484,14 @@ soft_reset:
pyb_usb_host_init(); pyb_usb_host_init();
#elif defined(USE_DEVICE_MODE) #elif defined(USE_DEVICE_MODE)
// USB device // USB device
if (reset_mode == 1) {
usb_device_mode_t usb_mode = USB_DEVICE_MODE_CDC_MSC; usb_device_mode_t usb_mode = USB_DEVICE_MODE_CDC_MSC;
// if we are not in reset_mode==1, this config variable will always be NULL
if (pyb_config_usb_mode != MP_OBJ_NULL) { if (pyb_config_usb_mode != MP_OBJ_NULL) {
if (strcmp(mp_obj_str_get_str(pyb_config_usb_mode), "CDC+HID") == 0) { if (strcmp(mp_obj_str_get_str(pyb_config_usb_mode), "CDC+HID") == 0) {
usb_mode = USB_DEVICE_MODE_CDC_HID; usb_mode = USB_DEVICE_MODE_CDC_HID;
} }
} }
pyb_usb_dev_init(usb_mode, usb_medium); pyb_usb_dev_init(usb_mode, usb_medium);
} else {
pyb_usb_dev_init(USB_DEVICE_MODE_CDC_MSC, usb_medium);
}
#endif #endif
#if MICROPY_HW_HAS_MMA7660 #if MICROPY_HW_HAS_MMA7660
......
...@@ -341,7 +341,6 @@ STATIC mp_obj_t pyb_hid_send_report(mp_obj_t arg) { ...@@ -341,7 +341,6 @@ STATIC mp_obj_t pyb_hid_send_report(mp_obj_t arg) {
} }
STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_hid_send_report_obj, pyb_hid_send_report); STATIC MP_DEFINE_CONST_FUN_OBJ_1(pyb_hid_send_report_obj, pyb_hid_send_report);
MP_DECLARE_CONST_FUN_OBJ(pyb_source_dir_obj); // defined in main.c
MP_DECLARE_CONST_FUN_OBJ(pyb_main_obj); // defined in main.c MP_DECLARE_CONST_FUN_OBJ(pyb_main_obj); // defined in main.c
MP_DECLARE_CONST_FUN_OBJ(pyb_usb_mode_obj); // defined in main.c MP_DECLARE_CONST_FUN_OBJ(pyb_usb_mode_obj); // defined in main.c
...@@ -360,7 +359,6 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = { ...@@ -360,7 +359,6 @@ STATIC const mp_map_elem_t pyb_module_globals_table[] = {
{ MP_OBJ_NEW_QSTR(MP_QSTR_stop), (mp_obj_t)&pyb_stop_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_stop), (mp_obj_t)&pyb_stop_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_standby), (mp_obj_t)&pyb_standby_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_standby), (mp_obj_t)&pyb_standby_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_source_dir), (mp_obj_t)&pyb_source_dir_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_main), (mp_obj_t)&pyb_main_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_main), (mp_obj_t)&pyb_main_obj },
{ MP_OBJ_NEW_QSTR(MP_QSTR_usb_mode), (mp_obj_t)&pyb_usb_mode_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_usb_mode), (mp_obj_t)&pyb_usb_mode_obj },
......
...@@ -39,7 +39,6 @@ Q(disable_irq) ...@@ -39,7 +39,6 @@ Q(disable_irq)
Q(enable_irq) Q(enable_irq)
Q(stop) Q(stop)
Q(standby) Q(standby)
Q(source_dir)
Q(main) Q(main)
Q(usb_mode) Q(usb_mode)
Q(sync) Q(sync)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment