From 0a5b1e9774e901b9db0f331a401cd96ac7b6ddcd Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Sat, 28 Sep 2024 22:14:53 +0200 Subject: [PATCH] modules: Add RGB stats ioctl. --- src/omv/common/sensor.h | 1 + src/omv/modules/py_sensor.c | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/omv/common/sensor.h b/src/omv/common/sensor.h index d313430e6..ec34ae36b 100644 --- a/src/omv/common/sensor.h +++ b/src/omv/common/sensor.h @@ -177,6 +177,7 @@ typedef enum { IOCTL_HIMAX_MD_WINDOW, IOCTL_HIMAX_MD_THRESHOLD, IOCTL_HIMAX_OSC_ENABLE, + IOCTL_GET_RGB_STATS, } ioctl_t; typedef enum { diff --git a/src/omv/modules/py_sensor.c b/src/omv/modules/py_sensor.c index ccf7c13ef..076d576d1 100644 --- a/src/omv/modules/py_sensor.c +++ b/src/omv/modules/py_sensor.c @@ -981,6 +981,18 @@ static mp_obj_t py_sensor_ioctl(uint n_args, const mp_obj_t *args) { } #endif // (OMV_HM01B0_ENABLE == 1) + case IOCTL_GET_RGB_STATS: { + uint32_t r, gb, gr, b; + error = sensor_ioctl(request, &r, &gb, &gr, &b); + if (error == 0) { + ret_obj = mp_obj_new_tuple(4, (mp_obj_t []) {mp_obj_new_int(r), + mp_obj_new_int(gb), + mp_obj_new_int(gr), + mp_obj_new_int(b)}); + } + break; + } + default: { sensor_raise_error(SENSOR_ERROR_CTL_UNSUPPORTED); break; @@ -1168,6 +1180,7 @@ static const mp_rom_map_elem_t globals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_IOCTL_HIMAX_MD_CLEAR), MP_ROM_INT(IOCTL_HIMAX_MD_CLEAR)}, { MP_ROM_QSTR(MP_QSTR_IOCTL_HIMAX_OSC_ENABLE), MP_ROM_INT(IOCTL_HIMAX_OSC_ENABLE)}, #endif + { MP_ROM_QSTR(MP_QSTR_IOCTL_GET_RGB_STATS), MP_ROM_INT(IOCTL_GET_RGB_STATS)}, // Sensor functions { MP_ROM_QSTR(MP_QSTR___init__), MP_ROM_PTR(&py_sensor__init__obj) },