sensors/GenX320: Adding ioctl for setting individual biases.

This commit is contained in:
Natalia Lyubova 2025-02-04 16:58:05 +01:00
parent 1962f4ba7a
commit d9e1ac2da6
4 changed files with 58 additions and 11 deletions

View File

@ -293,18 +293,12 @@ const BIAS_Params_t genx320es_default_biases = {
*/
const BIAS_Params_t genx320mp_default_biases = {
.pr = 61,
// .fo = 34, // old default
.fo = 24, // per prophesee to mitigate flickering
.fo = 24, //24 per prophesee to mitigate flickering (34 default)
.fes = 63,
// .hpf = 0, // old default
.hpf = 40, // new default
// .diff_on = 30, // old default
// .diff_on = 25, // new default
.diff_on = 35, // per prophesee to mitigate flickering
.hpf = 40,
.diff_on = 25, //35 per prophesee to mitigate flickering
.diff = 51,
// .diff_off = 33, // old default
// .diff_off = 28, // new default
.diff_off = 38, // per prophesee to mitigate flickering
.diff_off = 28, //38 per prophesee to mitigate flickering
.inv = 57,
.refr = 10,
.invp = 56,

View File

@ -219,7 +219,8 @@ typedef enum {
OMV_CSI_IOCTL_HIMAX_MD_THRESHOLD = 0x1D,
OMV_CSI_IOCTL_HIMAX_OSC_ENABLE = 0x1E | OMV_CSI_IOCTL_FLAGS_ABORT,
OMV_CSI_IOCTL_GET_RGB_STATS = 0x1F,
OMV_CSI_IOCTL_GENX320_SET_BIASES = 0x20
OMV_CSI_IOCTL_GENX320_SET_BIASES = 0x20,
OMV_CSI_IOCTL_GENX320_SET_BIAS = 0x21
} omv_csi_ioctl_t;
typedef enum {
@ -254,6 +255,14 @@ typedef enum {
OMV_CSI_GENX320_BIASES_LOW_NOISE,
OMV_CSI_GENX320_BIASES_HIGH_SPEED
} omv_csi_genx320_biases_preset_t;
typedef enum {
OMV_CSI_GENX320_BIAS_DIFF_OFF,
OMV_CSI_GENX320_BIAS_DIFF_ON,
OMV_CSI_GENX320_BIAS_FO,
OMV_CSI_GENX320_BIAS_HPF,
OMV_CSI_GENX320_BIAS_REFR
} omv_csi_genx320_bias_t;
#endif
typedef void (*vsync_cb_t) (uint32_t vsync);

View File

@ -1022,6 +1022,12 @@ static mp_obj_t py_omv_csi_ioctl(uint n_args, const mp_obj_t *args) {
}
break;
}
case OMV_CSI_IOCTL_GENX320_SET_BIAS: {
if (n_args == 3) {
error = omv_csi_ioctl(request, mp_obj_get_int(args[1]), mp_obj_get_int(args[2]));
}
break;
}
#endif // (OMV_GENX320_ENABLE == 1)
default: {
@ -1229,6 +1235,12 @@ static const mp_rom_map_elem_t globals_dict_table[] = {
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIASES_ACTIVE_MARKER), MP_ROM_INT(OMV_CSI_GENX320_BIASES_ACTIVE_MARKER)},
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIASES_LOW_NOISE), MP_ROM_INT(OMV_CSI_GENX320_BIASES_LOW_NOISE)},
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIASES_HIGH_SPEED), MP_ROM_INT(OMV_CSI_GENX320_BIASES_HIGH_SPEED)},
{ MP_ROM_QSTR(MP_QSTR_IOCTL_GENX320_SET_BIAS), MP_ROM_INT(OMV_CSI_IOCTL_GENX320_SET_BIAS)},
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIAS_DIFF_OFF), MP_ROM_INT(OMV_CSI_GENX320_BIAS_DIFF_OFF)},
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIAS_DIFF_ON), MP_ROM_INT(OMV_CSI_GENX320_BIAS_DIFF_ON)},
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIAS_FO), MP_ROM_INT(OMV_CSI_GENX320_BIAS_FO)},
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIAS_HPF), MP_ROM_INT(OMV_CSI_GENX320_BIAS_HPF)},
{ MP_ROM_QSTR(MP_QSTR_GENX320_BIAS_REFR), MP_ROM_INT(OMV_CSI_GENX320_BIAS_REFR)},
#endif
// Sensor functions

View File

@ -496,6 +496,38 @@ static int ioctl(omv_csi_t *csi, int request, va_list ap) {
}
break;
}
// Setting biases one by one
case OMV_CSI_IOCTL_GENX320_SET_BIAS: {
int bias_name = va_arg(ap, int);
int bias_value = va_arg(ap, int);
switch (bias_name) {
case OMV_CSI_GENX320_BIAS_DIFF_OFF: {
psee_sensor_set_bias(DIFF_OFF, bias_value);
break;
}
case OMV_CSI_GENX320_BIAS_DIFF_ON: {
psee_sensor_set_bias(DIFF_ON, bias_value);
break;
}
case OMV_CSI_GENX320_BIAS_FO: {
psee_sensor_set_bias(FO, bias_value);
break;
}
case OMV_CSI_GENX320_BIAS_HPF: {
psee_sensor_set_bias(HPF, bias_value);
break;
}
case OMV_CSI_GENX320_BIAS_REFR: {
psee_sensor_set_bias(REFR, bias_value);
break;
}
default: {
ret = -1;
break;
}
}
break;
}
default: {
ret = -1;
break;