diff --git a/src/omv/py/py_sensor.c b/src/omv/py/py_sensor.c index 2932f0e21..3c9f6eb52 100644 --- a/src/omv/py/py_sensor.c +++ b/src/omv/py/py_sensor.c @@ -571,6 +571,16 @@ static mp_obj_t py_sensor_set_color_palette(mp_obj_t palette_obj) { return mp_const_true; } +static mp_obj_t py_sensor_get_color_palette() { + const uint16_t *palette = sensor_get_color_palette(); + if (palette == rainbow_table) { + return mp_obj_new_int(COLOR_PALETTE_RAINBOW); + } else if (palette == ironbow_table) { + return mp_obj_new_int(COLOR_PALETTE_IRONBOW); + } + return mp_const_none; +} + static mp_obj_t py_sensor_write_reg(mp_obj_t addr, mp_obj_t val) { sensor_write_reg(mp_obj_get_int(addr), mp_obj_get_int(val)); return mp_const_none; @@ -620,6 +630,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_3(py_sensor_set_lens_correction_obj, py_sensor_se STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_vsync_output_obj, py_sensor_set_vsync_output); STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(py_sensor_ioctl_obj, 1, 5, py_sensor_ioctl); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_color_palette_obj, py_sensor_set_color_palette); +STATIC MP_DEFINE_CONST_FUN_OBJ_0(py_sensor_get_color_palette_obj, py_sensor_get_color_palette); STATIC MP_DEFINE_CONST_FUN_OBJ_2(py_sensor_write_reg_obj, py_sensor_write_reg); STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_read_reg_obj, py_sensor_read_reg); @@ -729,6 +740,7 @@ STATIC const mp_map_elem_t globals_dict_table[] = { { MP_OBJ_NEW_QSTR(MP_QSTR_set_vsync_output), (mp_obj_t)&py_sensor_set_vsync_output_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_ioctl), (mp_obj_t)&py_sensor_ioctl_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR_set_color_palette), (mp_obj_t)&py_sensor_set_color_palette_obj }, + { MP_OBJ_NEW_QSTR(MP_QSTR_get_color_palette), (mp_obj_t)&py_sensor_get_color_palette_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR___write_reg), (mp_obj_t)&py_sensor_write_reg_obj }, { MP_OBJ_NEW_QSTR(MP_QSTR___read_reg), (mp_obj_t)&py_sensor_read_reg_obj }, }; diff --git a/src/omv/py/qstrdefsomv.h b/src/omv/py/qstrdefsomv.h index 9c563a02a..e373b7bba 100644 --- a/src/omv/py/qstrdefsomv.h +++ b/src/omv/py/qstrdefsomv.h @@ -260,6 +260,7 @@ Q(set_special_effect) Q(set_lens_correction) Q(ioctl) Q(set_color_palette) +Q(get_color_palette) Q(__write_reg) Q(__read_reg) diff --git a/src/omv/sensor.c b/src/omv/sensor.c index 7261b87bc..21bc4c208 100644 --- a/src/omv/sensor.c +++ b/src/omv/sensor.c @@ -744,6 +744,11 @@ int sensor_set_color_palette(const uint16_t *color_palette) return 0; } +const uint16_t *sensor_get_color_palette() +{ + return sensor.color_palette; +} + void DCMI_VsyncExtiCallback() { __HAL_GPIO_EXTI_CLEAR_FLAG(1 << DCMI_VSYNC_IRQ_LINE); diff --git a/src/omv/sensor.h b/src/omv/sensor.h index 9a110cf66..b73e89576 100644 --- a/src/omv/sensor.h +++ b/src/omv/sensor.h @@ -272,6 +272,9 @@ int sensor_set_vsync_output(GPIO_TypeDef *gpio, uint32_t pin); // Set color palette int sensor_set_color_palette(const uint16_t *color_palette); +// Get color palette +const uint16_t *sensor_get_color_palette(); + // Default snapshot function. int sensor_snapshot(sensor_t *sensor, image_t *image, streaming_cb_t streaming_cb); #endif /* __SENSOR_H__ */