@@ -54,6 +54,7 @@ static byte pybsd_af_d0, pybsd_af_clk, pybsd_af_cmd;
54
54
static const pin_obj_t * pybsd_pin_sd_detect ;
55
55
static bool pybsd_pin_config_set ;
56
56
static bool pybsd_is_enabled ;
57
+ static bool pybsd_in_path ;
57
58
static FATFS * sd_fatfs ;
58
59
59
60
@@ -141,14 +142,16 @@ STATIC mp_obj_t pybsd_enable(mp_obj_t self) {
141
142
else {
142
143
nlr_raise (mp_obj_new_exception_msg (& mp_type_OSError , mpexception_os_resource_not_avaliable ));
143
144
}
145
+ pybsd_is_enabled = true;
144
146
145
147
// try to mount the sd card on /SD
146
- if (FR_OK == f_mount (sd_fatfs , "/SD" , 1 )) {
147
- mp_obj_list_append (mp_sys_path , MP_OBJ_NEW_QSTR (MP_QSTR__slash_SD ));
148
- mp_obj_list_append (mp_sys_path , MP_OBJ_NEW_QSTR (MP_QSTR__slash_SD_slash_LIB ));
148
+ if (FR_OK != f_mount (sd_fatfs , "/SD" , 1 )) {
149
+ nlr_raise (mp_obj_new_exception_msg (& mp_type_OSError , mpexception_os_operation_failed ));
149
150
}
150
151
151
- pybsd_is_enabled = true;
152
+ mp_obj_list_append (mp_sys_path , MP_OBJ_NEW_QSTR (MP_QSTR__slash_SD ));
153
+ mp_obj_list_append (mp_sys_path , MP_OBJ_NEW_QSTR (MP_QSTR__slash_SD_slash_LIB ));
154
+ pybsd_in_path = true;
152
155
153
156
return mp_const_none ;
154
157
}
@@ -159,10 +162,15 @@ STATIC mp_obj_t pybsd_disable(mp_obj_t self) {
159
162
pybsd_is_enabled = false;
160
163
// unmount the sd card
161
164
f_mount (NULL , "/SD" , 1 );
165
+ // remove sd paths from mp_sys_path
166
+ if (pybsd_in_path ) {
167
+ mp_obj_list_remove (mp_sys_path , MP_OBJ_NEW_QSTR (MP_QSTR__slash_SD ));
168
+ mp_obj_list_remove (mp_sys_path , MP_OBJ_NEW_QSTR (MP_QSTR__slash_SD_slash_LIB ));
169
+ pybsd_in_path = false;
170
+ }
162
171
// disable the peripheral
163
172
MAP_PRCMPeripheralClkDisable (PRCM_SDHOST , PRCM_RUN_MODE_CLK | PRCM_SLP_MODE_CLK );
164
173
}
165
-
166
174
return mp_const_none ;
167
175
}
168
176
STATIC MP_DEFINE_CONST_FUN_OBJ_1 (pybsd_disable_obj , pybsd_disable );
@@ -172,7 +180,6 @@ STATIC const mp_map_elem_t pybsd_locals_dict_table[] = {
172
180
{ MP_OBJ_NEW_QSTR (MP_QSTR_enable ), (mp_obj_t )& pybsd_enable_obj },
173
181
{ MP_OBJ_NEW_QSTR (MP_QSTR_disable ), (mp_obj_t )& pybsd_disable_obj },
174
182
};
175
-
176
183
STATIC MP_DEFINE_CONST_DICT (pybsd_locals_dict , pybsd_locals_dict_table );
177
184
178
185
static const mp_obj_type_t sdcard_type = {
0 commit comments