@@ -40,7 +40,7 @@ const mp_obj_type_t camera_type;
4040
4141//Constructor
4242static mp_obj_t mp_camera_make_new (const mp_obj_type_t * type , size_t n_args , size_t n_kw , const mp_obj_t * all_args ) {
43- enum { ARG_data_pins , ARG_pixel_clock_pin , ARG_vsync_pin , ARG_href_pin , ARG_sda_pin , ARG_scl_pin , ARG_xclock_pin , ARG_xclock_frequency , ARG_powerdown_pin , ARG_reset_pin , ARG_pixel_format , ARG_frame_size , ARG_jpeg_quality , ARG_fb_count , ARG_grab_mode , ARG_init , NUM_ARGS };
43+ enum { ARG_data_pins , ARG_pixel_clock_pin , ARG_vsync_pin , ARG_href_pin , ARG_sda_pin , ARG_scl_pin , ARG_xclock_pin , ARG_xclock_frequency , ARG_powerdown_pin , ARG_reset_pin , ARG_pixel_format , ARG_frame_size , ARG_jpeg_quality , ARG_fb_count , ARG_grab_mode , ARG_init , ARG_bmp_out , NUM_ARGS };
4444 static const mp_arg_t allowed_args [] = {
4545 #ifdef MICROPY_CAMERA_ALL_REQ_PINS_DEFINED
4646 { MP_QSTR_data_pins , MP_ARG_OBJ | MP_ARG_KW_ONLY , { .u_obj = MP_ROM_NONE } },
@@ -68,6 +68,7 @@ static mp_obj_t mp_camera_make_new(const mp_obj_type_t *type, size_t n_args, siz
6868 { MP_QSTR_fb_count , MP_ARG_INT | MP_ARG_KW_ONLY , { .u_int = MICROPY_CAMERA_FB_COUNT } },
6969 { MP_QSTR_grab_mode , MP_ARG_INT | MP_ARG_KW_ONLY , { .u_int = MICROPY_CAMERA_GRAB_MODE } },
7070 { MP_QSTR_init , MP_ARG_BOOL | MP_ARG_KW_ONLY , { .u_bool = true } },
71+ { MP_QSTR_bmp_out , MP_ARG_BOOL | MP_ARG_KW_ONLY , { .u_bool = false } },
7172 };
7273
7374 mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
@@ -128,6 +129,7 @@ static mp_obj_t mp_camera_make_new(const mp_obj_type_t *type, size_t n_args, siz
128129
129130 mp_camera_obj_t * self = mp_obj_malloc_with_finaliser (mp_camera_obj_t , & camera_type );
130131 self -> base .type = & camera_type ;
132+ self -> bmp_out = args [ARG_bmp_out ].u_bool ;
131133
132134 mp_camera_hal_construct (self , data_pins , xclock_pin , pixel_clock_pin , vsync_pin , href_pin , powerdown_pin , reset_pin ,
133135 sda_pin , scl_pin , xclock_frequency , pixel_format , frame_size , jpeg_quality , fb_count , grab_mode );
@@ -205,6 +207,20 @@ static mp_obj_t mp_camera_deinit(mp_obj_t self_in) {
205207}
206208static MP_DEFINE_CONST_FUN_OBJ_1 (mp_camera_deinit_obj , mp_camera_deinit ) ;
207209
210+ static mp_obj_t camera_get_bmp_out (mp_obj_t self_in ) {
211+ mp_camera_obj_t * self = MP_OBJ_TO_PTR (self_in );
212+ return mp_obj_new_bool (self -> bmp_out );
213+ }
214+ static MP_DEFINE_CONST_FUN_OBJ_1 (camera_get_bmp_out_obj , camera_get_bmp_out ) ;
215+
216+ static mp_obj_t camera_set_bmp_out (mp_obj_t self_in , mp_obj_t arg ) {
217+ mp_camera_obj_t * self = MP_OBJ_TO_PTR (self_in );
218+ self -> bmp_out = mp_obj_is_true (arg );
219+ return mp_const_none ;
220+ }
221+ static MP_DEFINE_CONST_FUN_OBJ_2 (camera_set_bmp_out_obj , camera_set_bmp_out ) ;
222+
223+ // Destructor
208224static mp_obj_t mp_camera_obj___exit__ (size_t n_args , const mp_obj_t * args ) {
209225 (void )n_args ;
210226 return mp_camera_deinit (args [0 ]);
@@ -316,6 +332,7 @@ static const mp_rom_map_elem_t camera_camera_locals_table[] = {
316332 ADD_PROPERTY_TO_TABLE (wpc ),
317333 ADD_PROPERTY_TO_TABLE (raw_gma ),
318334 ADD_PROPERTY_TO_TABLE (lenc ),
335+ ADD_PROPERTY_TO_TABLE (bmp_out ),
319336};
320337static MP_DEFINE_CONST_DICT (camera_camera_locals_dict , camera_camera_locals_table ) ;
321338
0 commit comments