mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Add set_gain/exposure/whitebalance functions.
* Add functions to disable auto functions control and set manual values.
This commit is contained in:
parent
c6ba893d3d
commit
1b22a29612
@ -607,28 +607,7 @@ static int set_colorbar(sensor_t *sensor, int enable)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_whitebal(sensor_t *sensor, int enable)
|
static int set_auto_gain(sensor_t *sensor, int enable, int gain)
|
||||||
{
|
|
||||||
int ret=0;
|
|
||||||
uint8_t reg;
|
|
||||||
|
|
||||||
/* Switch to SENSOR register bank */
|
|
||||||
ret |= SCCB_Write(sensor->slv_addr, BANK_SEL, BANK_SEL_DSP);
|
|
||||||
|
|
||||||
/* Update CTRL1 */
|
|
||||||
reg = SCCB_Read(sensor->slv_addr, CTRL1);
|
|
||||||
|
|
||||||
if (enable) {
|
|
||||||
reg |= CTRL1_AWB;
|
|
||||||
} else {
|
|
||||||
reg &= ~CTRL1_AWB;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret |= SCCB_Write(sensor->slv_addr, CTRL1, reg);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int set_gain_ctrl(sensor_t *sensor, int enable)
|
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
uint8_t reg;
|
uint8_t reg;
|
||||||
@ -649,7 +628,7 @@ static int set_gain_ctrl(sensor_t *sensor, int enable)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_exposure_ctrl(sensor_t *sensor, int enable)
|
static int set_auto_exposure(sensor_t *sensor, int enable, int exposure)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
uint8_t reg;
|
uint8_t reg;
|
||||||
@ -670,6 +649,28 @@ static int set_exposure_ctrl(sensor_t *sensor, int enable)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int set_auto_whitebal(sensor_t *sensor, int enable, int r_gain, int g_gain, int b_gain)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
uint8_t reg;
|
||||||
|
|
||||||
|
/* Switch to SENSOR register bank */
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, BANK_SEL, BANK_SEL_DSP);
|
||||||
|
|
||||||
|
/* Update CTRL1 */
|
||||||
|
reg = SCCB_Read(sensor->slv_addr, CTRL1);
|
||||||
|
|
||||||
|
if (enable) {
|
||||||
|
reg |= CTRL1_AWB;
|
||||||
|
} else {
|
||||||
|
reg &= ~CTRL1_AWB;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, CTRL1, reg);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int set_hmirror(sensor_t *sensor, int enable)
|
static int set_hmirror(sensor_t *sensor, int enable)
|
||||||
{
|
{
|
||||||
int ret=0;
|
int ret=0;
|
||||||
@ -725,9 +726,9 @@ int ov2640_init(sensor_t *sensor)
|
|||||||
sensor->set_gainceiling = set_gainceiling;
|
sensor->set_gainceiling = set_gainceiling;
|
||||||
sensor->set_quality = set_quality;
|
sensor->set_quality = set_quality;
|
||||||
sensor->set_colorbar = set_colorbar;
|
sensor->set_colorbar = set_colorbar;
|
||||||
sensor->set_gain_ctrl = set_gain_ctrl;
|
sensor->set_auto_gain = set_auto_gain;
|
||||||
sensor->set_exposure_ctrl = set_exposure_ctrl;
|
sensor->set_auto_exposure = set_auto_exposure;
|
||||||
sensor->set_whitebal = set_whitebal;
|
sensor->set_auto_whitebal = set_auto_whitebal;
|
||||||
sensor->set_hmirror = set_hmirror;
|
sensor->set_hmirror = set_hmirror;
|
||||||
sensor->set_vflip = set_vflip;
|
sensor->set_vflip = set_vflip;
|
||||||
|
|
||||||
|
|||||||
@ -311,40 +311,69 @@ static int set_colorbar(sensor_t *sensor, int enable)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_whitebal(sensor_t *sensor, int enable)
|
static int set_auto_gain(sensor_t *sensor, int enable, int gain)
|
||||||
{
|
{
|
||||||
|
int ret=0;
|
||||||
// Read register COM8
|
// Read register COM8
|
||||||
uint8_t reg = SCCB_Read(sensor->slv_addr, COM8);
|
uint8_t reg = SCCB_Read(sensor->slv_addr, COM8);
|
||||||
|
|
||||||
// Set white bal on/off
|
// Set AGC on/off
|
||||||
reg = COM8_SET_AWB(reg, enable);
|
|
||||||
|
|
||||||
// Write back register COM8
|
|
||||||
return SCCB_Write(sensor->slv_addr, COM8, reg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int set_gain_ctrl(sensor_t *sensor, int enable)
|
|
||||||
{
|
|
||||||
// Read register COM8
|
|
||||||
uint8_t reg = SCCB_Read(sensor->slv_addr, COM8);
|
|
||||||
|
|
||||||
// Set white bal on/off
|
|
||||||
reg = COM8_SET_AGC(reg, enable);
|
reg = COM8_SET_AGC(reg, enable);
|
||||||
|
|
||||||
// Write back register COM8
|
// Write back register COM8
|
||||||
return SCCB_Write(sensor->slv_addr, COM8, reg);
|
ret |= SCCB_Write(sensor->slv_addr, COM8, reg);
|
||||||
|
|
||||||
|
if (enable == 0 && gain >= 0) {
|
||||||
|
// Set value manually.
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, GAIN, gain);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_exposure_ctrl(sensor_t *sensor, int enable)
|
static int set_auto_exposure(sensor_t *sensor, int enable, int exposure)
|
||||||
{
|
{
|
||||||
|
int ret=0;
|
||||||
// Read register COM8
|
// Read register COM8
|
||||||
uint8_t reg = SCCB_Read(sensor->slv_addr, COM8);
|
uint8_t reg = SCCB_Read(sensor->slv_addr, COM8);
|
||||||
|
|
||||||
// Set white bal on/off
|
// Set AEC on/off
|
||||||
reg = COM8_SET_AEC(reg, enable);
|
reg = COM8_SET_AEC(reg, enable);
|
||||||
|
|
||||||
// Write back register COM8
|
// Write back register COM8
|
||||||
return SCCB_Write(sensor->slv_addr, COM8, reg);
|
ret |= SCCB_Write(sensor->slv_addr, COM8, reg);
|
||||||
|
|
||||||
|
if (enable == 0 && exposure >= 0) {
|
||||||
|
// Set value manually.
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, AEC, (exposure&0xFF));
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, AECH, ((exposure>>8)&0xFF));
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static int set_auto_whitebal(sensor_t *sensor, int enable, int r_gain, int g_gain, int b_gain)
|
||||||
|
{
|
||||||
|
int ret=0;
|
||||||
|
|
||||||
|
// Read register COM8
|
||||||
|
uint8_t reg = SCCB_Read(sensor->slv_addr, COM8);
|
||||||
|
|
||||||
|
// Set AWB on/off
|
||||||
|
reg = COM8_SET_AWB(reg, enable);
|
||||||
|
|
||||||
|
// Write back register COM8
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, COM8, reg);
|
||||||
|
|
||||||
|
if (enable == 0 && r_gain >= 0 && g_gain >=0 && b_gain >=0) {
|
||||||
|
// Set value manually.
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, RED, r_gain);
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, GREEN, g_gain);
|
||||||
|
ret |= SCCB_Write(sensor->slv_addr, BLUE, b_gain);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_hmirror(sensor_t *sensor, int enable)
|
static int set_hmirror(sensor_t *sensor, int enable)
|
||||||
@ -414,9 +443,9 @@ int ov7725_init(sensor_t *sensor)
|
|||||||
sensor->set_saturation= set_saturation;
|
sensor->set_saturation= set_saturation;
|
||||||
sensor->set_gainceiling = set_gainceiling;
|
sensor->set_gainceiling = set_gainceiling;
|
||||||
sensor->set_colorbar = set_colorbar;
|
sensor->set_colorbar = set_colorbar;
|
||||||
sensor->set_whitebal = set_whitebal;
|
sensor->set_auto_gain = set_auto_gain;
|
||||||
sensor->set_gain_ctrl = set_gain_ctrl;
|
sensor->set_auto_exposure = set_auto_exposure;
|
||||||
sensor->set_exposure_ctrl = set_exposure_ctrl;
|
sensor->set_auto_whitebal = set_auto_whitebal;
|
||||||
sensor->set_hmirror = set_hmirror;
|
sensor->set_hmirror = set_hmirror;
|
||||||
sensor->set_vflip = set_vflip;
|
sensor->set_vflip = set_vflip;
|
||||||
sensor->set_special_effect = set_special_effect;
|
sensor->set_special_effect = set_special_effect;
|
||||||
|
|||||||
@ -343,18 +343,7 @@ static int set_gainceiling(sensor_t *sensor, gainceiling_t gainceiling)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_whitebal(sensor_t *sensor, int enable)
|
static int set_auto_gain(sensor_t *sensor, int enable, int gain)
|
||||||
{
|
|
||||||
uint8_t val;
|
|
||||||
val = SCCB_Read(sensor->slv_addr, REG_COM8);
|
|
||||||
|
|
||||||
SCCB_Write(sensor->slv_addr, REG_COM8,
|
|
||||||
enable ? (val | REG_COM8_AWB) : (val & ~REG_COM8_AWB));
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int set_gain_ctrl(sensor_t *sensor, int enable)
|
|
||||||
{
|
{
|
||||||
uint8_t val;
|
uint8_t val;
|
||||||
val = SCCB_Read(sensor->slv_addr, REG_COM8);
|
val = SCCB_Read(sensor->slv_addr, REG_COM8);
|
||||||
@ -365,7 +354,7 @@ static int set_gain_ctrl(sensor_t *sensor, int enable)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int set_exposure_ctrl(sensor_t *sensor, int enable)
|
static int set_auto_exposure(sensor_t *sensor, int enable, int exposure)
|
||||||
{
|
{
|
||||||
uint8_t val;
|
uint8_t val;
|
||||||
val = SCCB_Read(sensor->slv_addr, REG_COM8);
|
val = SCCB_Read(sensor->slv_addr, REG_COM8);
|
||||||
@ -376,6 +365,17 @@ static int set_exposure_ctrl(sensor_t *sensor, int enable)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int set_auto_whitebal(sensor_t *sensor, int enable, int r_gain, int g_gain, int b_gain)
|
||||||
|
{
|
||||||
|
uint8_t val;
|
||||||
|
val = SCCB_Read(sensor->slv_addr, REG_COM8);
|
||||||
|
|
||||||
|
SCCB_Write(sensor->slv_addr, REG_COM8,
|
||||||
|
enable ? (val | REG_COM8_AWB) : (val & ~REG_COM8_AWB));
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int set_hmirror(sensor_t *sensor, int enable)
|
static int set_hmirror(sensor_t *sensor, int enable)
|
||||||
{
|
{
|
||||||
uint8_t val;
|
uint8_t val;
|
||||||
@ -407,9 +407,9 @@ int ov9650_init(sensor_t *sensor)
|
|||||||
sensor->set_framerate = set_framerate;
|
sensor->set_framerate = set_framerate;
|
||||||
sensor->set_brightness= set_brightness;
|
sensor->set_brightness= set_brightness;
|
||||||
sensor->set_gainceiling = set_gainceiling;
|
sensor->set_gainceiling = set_gainceiling;
|
||||||
sensor->set_whitebal = set_whitebal;
|
sensor->set_auto_gain = set_auto_gain;
|
||||||
sensor->set_gain_ctrl = set_gain_ctrl;
|
sensor->set_auto_exposure = set_auto_exposure;
|
||||||
sensor->set_exposure_ctrl = set_exposure_ctrl;
|
sensor->set_auto_whitebal = set_auto_whitebal;
|
||||||
sensor->set_hmirror = set_hmirror;
|
sensor->set_hmirror = set_hmirror;
|
||||||
sensor->set_vflip = set_vflip;
|
sensor->set_vflip = set_vflip;
|
||||||
|
|
||||||
|
|||||||
@ -237,22 +237,29 @@ static mp_obj_t py_sensor_set_colorbar(mp_obj_t enable) {
|
|||||||
return mp_const_true;
|
return mp_const_true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static mp_obj_t py_sensor_set_whitebal(mp_obj_t enable) {
|
static mp_obj_t py_sensor_set_auto_gain(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) {
|
||||||
if (sensor_set_whitebal(mp_obj_is_true(enable)) != 0) {
|
int enable = mp_obj_get_int(args[0]);
|
||||||
|
int value = py_helper_lookup_int(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_value), -1);
|
||||||
|
if (sensor_set_auto_gain(enable, value) != 0) {
|
||||||
return mp_const_false;
|
return mp_const_false;
|
||||||
}
|
}
|
||||||
return mp_const_true;
|
return mp_const_true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static mp_obj_t py_sensor_set_gain_ctrl(mp_obj_t enable) {
|
static mp_obj_t py_sensor_set_auto_exposure(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) {
|
||||||
if (sensor_set_gain_ctrl(mp_obj_is_true(enable)) != 0) {
|
int enable = mp_obj_get_int(args[0]);
|
||||||
|
int value = py_helper_lookup_int(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_value), -1);
|
||||||
|
if (sensor_set_auto_exposure(enable, value) != 0) {
|
||||||
return mp_const_false;
|
return mp_const_false;
|
||||||
}
|
}
|
||||||
return mp_const_true;
|
return mp_const_true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static mp_obj_t py_sensor_set_exposure_ctrl(mp_obj_t enable) {
|
static mp_obj_t py_sensor_set_auto_whitebal(uint n_args, const mp_obj_t *args, mp_map_t *kw_args) {
|
||||||
if (sensor_set_exposure_ctrl(mp_obj_is_true(enable)) != 0) {
|
int enable = mp_obj_get_int(args[0]);
|
||||||
|
int value[3] = {-1, -1, -1};
|
||||||
|
py_helper_lookup_int_array(kw_args, MP_OBJ_NEW_QSTR(MP_QSTR_value), value, 3);
|
||||||
|
if (sensor_set_auto_whitebal(enable, value[0], value[1], value[2]) != 0) {
|
||||||
return mp_const_false;
|
return mp_const_false;
|
||||||
}
|
}
|
||||||
return mp_const_true;
|
return mp_const_true;
|
||||||
@ -315,9 +322,9 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_brightness_obj, py_sensor_se
|
|||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_saturation_obj, py_sensor_set_saturation);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_saturation_obj, py_sensor_set_saturation);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_quality_obj, py_sensor_set_quality);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_quality_obj, py_sensor_set_quality);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_colorbar_obj, py_sensor_set_colorbar);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_colorbar_obj, py_sensor_set_colorbar);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_whitebal_obj, py_sensor_set_whitebal);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_sensor_set_auto_gain_obj, 1,py_sensor_set_auto_gain);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_gain_ctrl_obj, py_sensor_set_gain_ctrl);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_sensor_set_auto_exposure_obj,1,py_sensor_set_auto_exposure);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_exposure_ctrl_obj, py_sensor_set_exposure_ctrl);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_KW(py_sensor_set_auto_whitebal_obj,1,py_sensor_set_auto_whitebal);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_hmirror_obj, py_sensor_set_hmirror);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_hmirror_obj, py_sensor_set_hmirror);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_vflip_obj, py_sensor_set_vflip);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_vflip_obj, py_sensor_set_vflip);
|
||||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_special_effect_obj, py_sensor_set_special_effect);
|
STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_sensor_set_special_effect_obj, py_sensor_set_special_effect);
|
||||||
@ -372,9 +379,9 @@ STATIC const mp_map_elem_t globals_dict_table[] = {
|
|||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_saturation), (mp_obj_t)&py_sensor_set_saturation_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_saturation), (mp_obj_t)&py_sensor_set_saturation_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_quality), (mp_obj_t)&py_sensor_set_quality_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_quality), (mp_obj_t)&py_sensor_set_quality_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_colorbar), (mp_obj_t)&py_sensor_set_colorbar_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_colorbar), (mp_obj_t)&py_sensor_set_colorbar_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_whitebal), (mp_obj_t)&py_sensor_set_whitebal_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_auto_gain), (mp_obj_t)&py_sensor_set_auto_gain_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_gain_ctrl), (mp_obj_t)&py_sensor_set_gain_ctrl_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_auto_exposure), (mp_obj_t)&py_sensor_set_auto_exposure_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_exposure_ctrl), (mp_obj_t)&py_sensor_set_exposure_ctrl_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_auto_whitebal), (mp_obj_t)&py_sensor_set_auto_whitebal_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_hmirror), (mp_obj_t)&py_sensor_set_hmirror_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_hmirror), (mp_obj_t)&py_sensor_set_hmirror_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_vflip), (mp_obj_t)&py_sensor_set_vflip_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_vflip), (mp_obj_t)&py_sensor_set_vflip_obj },
|
||||||
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_special_effect), (mp_obj_t)&py_sensor_set_special_effect_obj },
|
{ MP_OBJ_NEW_QSTR(MP_QSTR_set_special_effect), (mp_obj_t)&py_sensor_set_special_effect_obj },
|
||||||
|
|||||||
@ -172,6 +172,7 @@ Q(OV9650)
|
|||||||
Q(OV2640)
|
Q(OV2640)
|
||||||
Q(OV7725)
|
Q(OV7725)
|
||||||
Q(line_filter)
|
Q(line_filter)
|
||||||
|
Q(value)
|
||||||
|
|
||||||
//SDE
|
//SDE
|
||||||
Q(NORMAL)
|
Q(NORMAL)
|
||||||
@ -193,9 +194,9 @@ Q(set_brightness)
|
|||||||
Q(set_saturation)
|
Q(set_saturation)
|
||||||
Q(set_quality)
|
Q(set_quality)
|
||||||
Q(set_colorbar)
|
Q(set_colorbar)
|
||||||
Q(set_whitebal)
|
Q(set_auto_gain)
|
||||||
Q(set_gain_ctrl)
|
Q(set_auto_exposure)
|
||||||
Q(set_exposure_ctrl)
|
Q(set_auto_whitebal)
|
||||||
Q(set_hmirror)
|
Q(set_hmirror)
|
||||||
Q(set_vflip)
|
Q(set_vflip)
|
||||||
Q(set_special_effect)
|
Q(set_special_effect)
|
||||||
|
|||||||
@ -490,33 +490,33 @@ int sensor_set_colorbar(int enable)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sensor_set_whitebal(int enable)
|
int sensor_set_auto_gain(int enable, int gain)
|
||||||
{
|
{
|
||||||
/* call the sensor specific function */
|
/* call the sensor specific function */
|
||||||
if (sensor.set_whitebal == NULL
|
if (sensor.set_auto_gain == NULL
|
||||||
|| sensor.set_whitebal(&sensor, enable) != 0) {
|
|| sensor.set_auto_gain(&sensor, enable, gain) != 0) {
|
||||||
/* operation not supported */
|
/* operation not supported */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sensor_set_gain_ctrl(int enable)
|
int sensor_set_auto_exposure(int enable, int exposure)
|
||||||
{
|
{
|
||||||
/* call the sensor specific function */
|
/* call the sensor specific function */
|
||||||
if (sensor.set_gain_ctrl == NULL
|
if (sensor.set_auto_exposure == NULL
|
||||||
|| sensor.set_gain_ctrl(&sensor, enable) != 0) {
|
|| sensor.set_auto_exposure(&sensor, enable, exposure) != 0) {
|
||||||
/* operation not supported */
|
/* operation not supported */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sensor_set_exposure_ctrl(int enable)
|
int sensor_set_auto_whitebal(int enable, int r_gain, int g_gain, int b_gain)
|
||||||
{
|
{
|
||||||
/* call the sensor specific function */
|
/* call the sensor specific function */
|
||||||
if (sensor.set_exposure_ctrl == NULL
|
if (sensor.set_auto_whitebal == NULL
|
||||||
|| sensor.set_exposure_ctrl(&sensor, enable) != 0) {
|
|| sensor.set_auto_whitebal(&sensor, enable, r_gain, g_gain, b_gain) != 0) {
|
||||||
/* operation not supported */
|
/* operation not supported */
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -122,9 +122,9 @@ typedef struct _sensor {
|
|||||||
int (*set_gainceiling) (sensor_t *sensor, gainceiling_t gainceiling);
|
int (*set_gainceiling) (sensor_t *sensor, gainceiling_t gainceiling);
|
||||||
int (*set_quality) (sensor_t *sensor, int quality);
|
int (*set_quality) (sensor_t *sensor, int quality);
|
||||||
int (*set_colorbar) (sensor_t *sensor, int enable);
|
int (*set_colorbar) (sensor_t *sensor, int enable);
|
||||||
int (*set_whitebal) (sensor_t *sensor, int enable);
|
int (*set_auto_gain) (sensor_t *sensor, int enable, int gain);
|
||||||
int (*set_gain_ctrl) (sensor_t *sensor, int enable);
|
int (*set_auto_exposure) (sensor_t *sensor, int enable, int exposure);
|
||||||
int (*set_exposure_ctrl) (sensor_t *sensor, int enable);
|
int (*set_auto_whitebal) (sensor_t *sensor, int enable, int r_gain, int g_gain, int b_gain);
|
||||||
int (*set_hmirror) (sensor_t *sensor, int enable);
|
int (*set_hmirror) (sensor_t *sensor, int enable);
|
||||||
int (*set_vflip) (sensor_t *sensor, int enable);
|
int (*set_vflip) (sensor_t *sensor, int enable);
|
||||||
int (*set_special_effect) (sensor_t *sensor, sde_t sde);
|
int (*set_special_effect) (sensor_t *sensor, sde_t sde);
|
||||||
@ -183,14 +183,14 @@ int sensor_set_quality(int qs);
|
|||||||
// Enable/disable the colorbar mode.
|
// Enable/disable the colorbar mode.
|
||||||
int sensor_set_colorbar(int enable);
|
int sensor_set_colorbar(int enable);
|
||||||
|
|
||||||
// Enable/disable the whitebal mode.
|
// Enable auto gain or set value manually.
|
||||||
int sensor_set_whitebal(int enable);
|
int sensor_set_auto_gain(int enable, int gain);
|
||||||
|
|
||||||
// Enable/disable the agc mode.
|
// Enable auto exposure or set value manually.
|
||||||
int sensor_set_gain_ctrl(int enable);
|
int sensor_set_auto_exposure(int enable, int exposure);
|
||||||
|
|
||||||
// Enable/disable the aec mode.
|
// Enable auto white balance or set value manually.
|
||||||
int sensor_set_exposure_ctrl(int enable);
|
int sensor_set_auto_whitebal(int enable, int r_gain, int g_gain, int b_gain);
|
||||||
|
|
||||||
// Enable/disable the hmirror mode.
|
// Enable/disable the hmirror mode.
|
||||||
int sensor_set_hmirror(int enable);
|
int sensor_set_hmirror(int enable);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user