From f02a16ef3d7f4b9a64a203f748cbd7c88bcca120 Mon Sep 17 00:00:00 2001 From: "Kwabena W. Agyeman" Date: Mon, 17 Feb 2020 18:35:10 -0800 Subject: [PATCH] Fix up set windowing and add way to get current window. --- src/omv/py/py_sensor.c | 17 ++++++++++++++--- src/omv/py/qstrdefsomv.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/omv/py/py_sensor.c b/src/omv/py/py_sensor.c index ff1e3a53d..798adaed2 100644 --- a/src/omv/py/py_sensor.c +++ b/src/omv/py/py_sensor.c @@ -243,7 +243,8 @@ static mp_obj_t py_sensor_get_framesize() { return mp_obj_new_int(sensor.framesize); } -static mp_obj_t py_sensor_set_windowing(mp_obj_t roi_obj) { +static mp_obj_t py_sensor_set_windowing(mp_obj_t roi_obj) +{ int x, y, w, h; int res_w = resolution[sensor.framesize][0]; int res_h = resolution[sensor.framesize][1]; @@ -278,10 +279,18 @@ static mp_obj_t py_sensor_set_windowing(mp_obj_t roi_obj) { } if (sensor_set_windowing(x, y, w, h) != 0) { - return mp_const_false; + nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Failed to set windowing!")); } - return mp_const_true; + return mp_const_none; +} + +static mp_obj_t py_sensor_get_windowing() +{ + return mp_obj_new_tuple(4, (mp_obj_t []) {mp_obj_new_int(MAIN_FB()->x), + mp_obj_new_int(MAIN_FB()->y), + mp_obj_new_int(MAIN_FB()->u), + mp_obj_new_int(MAIN_FB()->v)}); } static mp_obj_t py_sensor_set_gainceiling(mp_obj_t gainceiling) { @@ -684,6 +693,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_framerate_obj, py_sensor_se STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_framesize_obj, py_sensor_set_framesize); STATIC MP_DEFINE_CONST_FUN_OBJ_0(py_sensor_get_framesize_obj, py_sensor_get_framesize); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_windowing_obj, py_sensor_set_windowing); +STATIC MP_DEFINE_CONST_FUN_OBJ_0(py_sensor_get_windowing_obj, py_sensor_get_windowing); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_gainceiling_obj, py_sensor_set_gainceiling); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_contrast_obj, py_sensor_set_contrast); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_brightness_obj, py_sensor_set_brightness); @@ -812,6 +822,7 @@ STATIC const mp_map_elem_t globals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_set_framesize), (mp_obj_t)&py_sensor_set_framesize_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_get_framesize), (mp_obj_t)&py_sensor_get_framesize_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_set_windowing), (mp_obj_t)&py_sensor_set_windowing_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_get_windowing), (mp_obj_t)&py_sensor_get_windowing_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_set_gainceiling), (mp_obj_t)&py_sensor_set_gainceiling_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_set_contrast), (mp_obj_t)&py_sensor_set_contrast_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_set_brightness), (mp_obj_t)&py_sensor_set_brightness_obj }, diff --git a/src/omv/py/qstrdefsomv.h b/src/omv/py/qstrdefsomv.h index 42a38cd96..641d30f31 100644 --- a/src/omv/py/qstrdefsomv.h +++ b/src/omv/py/qstrdefsomv.h @@ -253,6 +253,7 @@ Q(get_framesize) Q(set_vsync_output) Q(set_binning) Q(set_windowing) +Q(get_windowing) Q(set_gainceiling) Q(set_contrast) Q(set_brightness)