@@ -164,17 +164,19 @@ static mp_obj_t capture_frame(webcam_obj_t *self) {
164164 return result ;
165165}
166166
167- static mp_obj_t webcam_make_new ( const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * args ) {
167+ static mp_obj_t webcam_init ( mp_obj_t type_in , mp_obj_t device_obj ) {
168168 webcam_obj_t * self = m_new_obj (webcam_obj_t );
169- self -> base .type = type ;
169+ self -> base .type = MP_OBJ_TO_PTR ( type_in ) ;
170170 self -> fd = -1 ;
171171
172- if (init_webcam (self , "/dev/video0" ) < 0 ) {
172+ const char * device = mp_obj_str_get_str (device_obj );
173+ if (init_webcam (self , device ) < 0 ) {
173174 mp_raise_OSError (MP_EIO );
174175 }
175176
176177 return MP_OBJ_FROM_PTR (self );
177178}
179+ MP_DEFINE_CONST_FUN_OBJ_2 (webcam_init_obj , webcam_init );
178180
179181static mp_obj_t webcam_deinit (mp_obj_t self_in ) {
180182 webcam_obj_t * self = MP_OBJ_TO_PTR (self_in );
@@ -196,24 +198,25 @@ static const mp_rom_map_elem_t webcam_locals_dict_table[] = {
196198 { MP_ROM_QSTR (MP_QSTR_deinit ), MP_ROM_PTR (& webcam_deinit_obj ) },
197199 { MP_ROM_QSTR (MP_QSTR_capture_frame ), MP_ROM_PTR (& webcam_capture_frame_obj ) },
198200};
199- static MP_DEFINE_CONST_DICT (webcam_locals_dict , webcam_locals_dict_table ) ;
201+ MP_DEFINE_CONST_DICT (webcam_locals_dict , webcam_locals_dict_table );
200202
201203static const mp_obj_type_t webcam_type = {
202204 { & mp_type_type },
203205 .name = MP_QSTR_Webcam ,
204- .make_new = webcam_make_new ,
205- .locals_dict = (mp_obj_dict_t * )& webcam_locals_dict ,
206206};
207207
208208static const mp_rom_map_elem_t mp_module_webcam_globals_table [] = {
209209 { MP_ROM_QSTR (MP_QSTR___name__ ), MP_ROM_QSTR (MP_QSTR_webcam ) },
210210 { MP_ROM_QSTR (MP_QSTR_Webcam ), MP_ROM_PTR (& webcam_type ) },
211+ { MP_ROM_QSTR (MP_QSTR_init ), MP_ROM_PTR (& webcam_init_obj ) },
212+ { MP_ROM_QSTR (MP_QSTR_capture_frame ), MP_ROM_PTR (& webcam_capture_frame_obj ) },
213+ { MP_ROM_QSTR (MP_QSTR_deinit ), MP_ROM_PTR (& webcam_deinit_obj ) },
211214};
212215static MP_DEFINE_CONST_DICT (mp_module_webcam_globals , mp_module_webcam_globals_table ) ;
213216
214- const mp_obj_module_t mp_module_webcam = {
217+ const mp_obj_module_t webcam_user_cmodule = {
215218 .base = { & mp_type_module },
216- .globals = (mp_obj_dict_t * )& mp_module_webcam_globals ,
219+ .globals = (mp_obj_dict_t * )& mp_module_webcam_globals ,
217220};
218221
219- MP_REGISTER_MODULE (MP_QSTR_webcam , mp_module_webcam );
222+ MP_REGISTER_MODULE (MP_QSTR_webcam , webcam_user_cmodule );
0 commit comments