@@ -172,6 +172,26 @@ STATIC mp_obj_t audiomp3_mp3file_obj_set_file(mp_obj_t self_in, mp_obj_t file) {
172
172
}
173
173
MP_DEFINE_CONST_FUN_OBJ_2 (audiomp3_mp3file_set_file_obj , audiomp3_mp3file_obj_set_file );
174
174
175
+ //| def open_file(self, str) -> None:
176
+ //| """Takes in the name of a mp3 file, opens it, and replaces the old playback file."""
177
+ //| ...
178
+ //|
179
+ STATIC mp_obj_t audiomp3_mp3file_obj_open_file (mp_obj_t self_in , mp_obj_t path ) {
180
+ audiomp3_mp3file_obj_t * self = MP_OBJ_TO_PTR (self_in );
181
+ mp_obj_t file ;
182
+ check_for_deinit (self );
183
+ if (!mp_obj_is_str (path )) {
184
+ mp_raise_TypeError (translate ("file path must be provided as input" ));
185
+ }
186
+ file = mp_call_function_2 (MP_OBJ_FROM_PTR (& mp_builtin_open_obj ), path , MP_ROM_QSTR (MP_QSTR_rb ));
187
+ if (!mp_obj_is_type (file , & mp_type_fileio )) {
188
+ mp_raise_TypeError (translate ("file must be a file opened in byte mode" ));
189
+ }
190
+ common_hal_audiomp3_mp3file_set_file (self , file );
191
+ return mp_const_none ;
192
+ }
193
+ MP_DEFINE_CONST_FUN_OBJ_2 (audiomp3_mp3file_open_file_obj , audiomp3_mp3file_obj_open_file );
194
+
175
195
MP_PROPERTY_GETSET (audiomp3_mp3file_file_obj ,
176
196
(mp_obj_t )& audiomp3_mp3file_get_file_obj ,
177
197
(mp_obj_t )& audiomp3_mp3file_set_file_obj );
@@ -256,6 +276,7 @@ MP_PROPERTY_GETTER(audiomp3_mp3file_samples_decoded_obj,
256
276
257
277
STATIC const mp_rom_map_elem_t audiomp3_mp3file_locals_dict_table [] = {
258
278
// Methods
279
+ { MP_ROM_QSTR (MP_QSTR_open_file ), MP_ROM_PTR (& audiomp3_mp3file_open_file_obj ) },
259
280
{ MP_ROM_QSTR (MP_QSTR_deinit ), MP_ROM_PTR (& audiomp3_mp3file_deinit_obj ) },
260
281
{ MP_ROM_QSTR (MP_QSTR___enter__ ), MP_ROM_PTR (& default___enter___obj ) },
261
282
{ MP_ROM_QSTR (MP_QSTR___exit__ ), MP_ROM_PTR (& audiomp3_mp3file___exit___obj ) },
0 commit comments