📄 image_sensor.c
字号:
}
return KAL_FALSE;
} /* SIV100A_Set_Para_ISO */
/*************************************************************************
* FUNCTION
* SIV100A_Set_Para_DSC_Mode
*
* DESCRIPTION
* SIV100A
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_Set_Para_DSC_Mode(kal_uint32 iPara)
{
switch(iPara) {
case CAM_AUTO_DSC:
case CAM_PORTRAIT:
case CAM_LANDSCAPE:
case CAM_SPORT:
case CAM_FLOWER:
case CAM_NIGHTSCENE:
case CAM_TV_MODE:
case CAM_AV_MODE:
case CAM_ISO_MODE:
default:
return KAL_FALSE;
}
return KAL_FALSE;
} /* SIV100A_Set_Para_DSC_Mode */
/*************************************************************************
* FUNCTION
* SIV100A_Set_Para_Effect
*
* DESCRIPTION
* SIV100A
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_Set_Para_Effect(kal_uint32 iPara)
{
switch (iPara) {
case CAM_EFFECT_DEC_NORMAL:
write_cmos_sensor(0xE6, 0xFF);
write_cmos_sensor(0xE7, 0x00);
write_cmos_sensor(0xE8, 0xFF);
write_cmos_sensor(0xE9, 0x00);
break;
case CAM_EFFECT_DEC_GRAYSCALE:
write_cmos_sensor(0xE6, 0x80);
write_cmos_sensor(0xE8, 0x80);
write_cmos_sensor(0xE7, 0x80);
write_cmos_sensor(0xE9, 0x80);
break;
case CAM_EFFECT_DEC_SEPIA:
write_cmos_sensor(0xE6, 0xA0);
write_cmos_sensor(0xE7, 0xA0);
write_cmos_sensor(0xE8, 0x60);
write_cmos_sensor(0xE9, 0x60);
break;
case CAM_EFFECT_DEC_SEPIAGREEN:
write_cmos_sensor(0xE6, 0x50);
write_cmos_sensor(0xE7, 0x50);
write_cmos_sensor(0xE8, 0x50);
write_cmos_sensor(0xE9, 0x50);
break;
case CAM_EFFECT_DEC_SEPIABLUE:
write_cmos_sensor(0xE6, 0x60);
write_cmos_sensor(0xE7, 0x60);
write_cmos_sensor(0xE8, 0xC0);
write_cmos_sensor(0xE9, 0xC0);
break;
case CAM_EFFECT_DEC_COLORINV:
case CAM_EFFECT_DEC_GRAYINV:
case CAM_EFFECT_DEC_WATERCOLOR:
case CAM_EFFECT_DEC_LIGHTBLUR:
case CAM_EFFECT_DEC_BLUR:
case CAM_EFFECT_DEC_STRONGBLUR:
case CAM_EFFECT_DEC_UNSHARP:
case CAM_EFFECT_DEC_SHARPEN:
case CAM_EFFECT_DEC_MORESHARPEN:
case CAM_EFFECT_DEC_MEDIAN:
case CAM_EFFECT_DEC_DILATION:
case CAM_EFFECT_DEC_EROSION:
default:
return KAL_FALSE;
}
return KAL_TRUE;
} /* SIV100A_Set_Para_Effect */
/*************************************************************************
* FUNCTION
* SIV100A_Set_Para_AF_Key
*
* DESCRIPTION
* SIV100A
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_Set_Para_AF_Key(kal_uint32 iPara)
{
switch (iPara) {
case CAM_AF_RELEASE:
case CAM_AF_ONE_TIME:
case CAM_AF_CONTINUE:
default:
return KAL_FALSE;
}
return KAL_FALSE;
} /* SIV100A_Set_Para_AF_Key */
/*************************************************************************
* FUNCTION
* SIV100A_Set_Para_Manual_Focus_Dir
*
* DESCRIPTION
* SIV100A
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_Set_Para_Manual_Focus_Dir(kal_uint32 iPara)
{
switch (iPara) {
case CAM_FOCUS_STOP:
case CAM_FOCUS_FORWARD:
case CAM_FOCUS_BACKWARD:
case CAM_FOCUS_FORWARD_CONTINUE:
case CAM_FOCUS_BACKWARD_CONTINUE:
default:
return KAL_FALSE;
}
return KAL_FALSE;
} /* SIV100A_Set_Para_Manual_Focus_Dir */
/*************************************************************************
* FUNCTION
* SIV100A_Set_Para_AF_Mode
*
* DESCRIPTION
* SIV100A
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_Set_Para_AF_Mode(kal_uint32 iPara)
{
switch (iPara) {
case CAM_AF_AUTO_MODE:
case CAM_AF_MACRO_MODE:
case CAM_AF_INFINITE_MODE:
case CAM_AF_MANUAL_MODE:
default:
return KAL_FALSE;
}
return KAL_FALSE;
} /* SIV100A_Set_Para_AF_Mode */
/*************************************************************************
* FUNCTION
* SIV100A_Set_Para_AF_Meter
*
* DESCRIPTION
* SIV100A
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_Set_Para_AF_Meter(kal_uint32 iPara)
{
switch (iPara) {
case CAM_AF_SINGLE_ZONE:
case CAM_AF_MULTI3_ZONE:
case CAM_AF_MULTI5_ZONE:
default:
return KAL_FALSE;
}
return KAL_FALSE;
} /* SIV100A_Set_Para_AF_Meter */
/*************************************************************************
* FUNCTION
* SIV100A_Set_Para_Flash
*
* DESCRIPTION
* SIV100A
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_Set_Para_Flash(kal_uint32 iPara)
{
switch (iPara) {
case CAM_FLASH_OFF:
case CAM_FLASH_ON:
case CAM_FLASH_AUTO:
case CAM_FLASH_REDEYE:
default:
return KAL_FALSE;
}
return KAL_FALSE;
} /* SIV100A_Set_Para_Flash */
/*************************************************************************
* FUNCTION
* SIV100A_YUV_SensorSetting
*
* DESCRIPTION
* This function sends command and parameter to YUV-mode SIV100A to configure it
*
* PARAMETERS
* None
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
kal_uint32 SIV100A_YUV_SensorSetting(kal_uint32 iCmd, kal_uint32 iPara)
{
kal_uint32 iRet = KAL_FALSE;
switch (iCmd) {
case CAM_PARAM_ZOOM_FACTOR:
iRet = SIV100A_Set_Para_Zoom(iPara);
break;
case CAM_PARAM_CONTRAST:
iRet = SIV100A_Set_Para_Contrast(iPara);
break;
case CAM_PARAM_BRIGHTNESS:
iRet = SIV100A_Set_Para_Brightness(iPara);
break;
case CAM_PARAM_HUE:
iRet = SIV100A_Set_Para_Hue(iPara);
break;
case CAM_PARAM_GAMMA:
iRet = SIV100A_Set_Para_Gamma(iPara);
break;
case CAM_PARAM_WB:
iRet = SIV100A_Set_Para_WB(iPara);
break;
case CAM_PARAM_EXPOSURE:
iRet = SIV100A_Set_Para_EV(iPara);
break;
case CAM_PARAM_EFFECT:
iRet = SIV100A_Set_Para_Effect(iPara);
break;
case CAM_PARAM_BANDING:
iRet = SIV100A_Set_Para_Banding(iPara);
break;
case CAM_PARAM_SATURATION:
iRet = SIV100A_Set_Para_Saturation(iPara);
break;
case CAM_PARAM_NIGHT_MODE:
iRet = SIV100A_Set_Para_NightMode(iPara);
break;
case CAM_PARAM_EV_VALUE:
iRet = SIV100A_Set_Para_EV(iPara);
break;
case CAM_PARAM_FLASH:
iRet = SIV100A_Set_Para_Flash(iPara);
break;
case CAM_PARAM_AE_METERING:
iRet = SIV100A_Set_Para_AE_Meter(iPara);
break;
case CAM_PARAM_AF_KEY:
iRet = SIV100A_Set_Para_AF_Key(iPara);
break;
case CAM_PARAM_AF_METERING:
iRet = SIV100A_Set_Para_AF_Meter(iPara);
break;
case CAM_PARAM_AF_MODE:
iRet = SIV100A_Set_Para_AF_Mode(iPara);
break;
case CAM_PARAM_MANUAL_FOCUS_DIR:
iRet = SIV100A_Set_Para_Manual_Focus_Dir(iPara);
break;
case CAM_PARAM_SHUTTER_PRIORITY:
iRet = SIV100A_Set_Para_Shutter_Priority(iPara);
break;
case CAM_PARAM_APERTURE_PRIORITY:
iRet = SIV100A_Set_Para_Aperture_Priority(iPara);
break;
case CAM_PARAM_ISO:
iRet = SIV100A_Set_Para_ISO(iPara);
break;
case CAM_PARAM_DSC_MODE:
iRet = SIV100A_Set_Para_DSC_Mode(iPara);
break;
default:
ASSERT(0);
}
return iRet;
} /* SIV100A_YUV_SensorSetting */
/*************************************************************************
* FUNCTION
* image_sensor_func_OV76X0
*
* DESCRIPTION
* OV76X0 Image Sensor functions struct.
*
* PARAMETERS
* none
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
image_sensor_func_struct image_sensor_func_SIV100A =
{
SIV100A_Init,
SIV100A_Get_I2C_ID,
SIV100A_GetSize,
SIV100A_GetPeriod,
SIV100A_Preview,
SIV100A_Capture,
SIV100A_WriteReg,
SIV100A_ReadReg,
SIV100A_SetShutter,
SIV100A_NightMode,
SIV100A_PowerOff,
SIV100A_SetGain,
SIV100A_SetFlash,
SIV100A_YUV_SensorSetting
}; /* image_sensor_func_SIV100A */
/*************************************************************************
* FUNCTION
* image_sensor_func_config
*
* DESCRIPTION
* This function maps the external camera module function API structure.
*
* PARAMETERS
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void image_sensor_func_config(void)
{
image_sensor_func = &image_sensor_func_SIV100A;
} /* image_sensor_func_config() */
/*************************************************************************
* FUNCTION
* camera_para_to_sensor
*
* DESCRIPTION
* This function write initial setting sequence into sensor's registers
*
* PARAMETERS
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void camera_para_to_sensor(void)
{
kal_uint16 iI;
for (iI = 0; camera_para.SENSOR.reg[iI].addr != 0xFFFFFFFF; iI++) {
write_cmos_sensor(camera_para.SENSOR.reg[iI].addr, camera_para.SENSOR.reg[iI].para);
}
for (iI = FACTORY_START_ADDR; camera_para.SENSOR.reg[iI].addr != 0xFFFFFFFF; iI++) {
write_cmos_sensor(camera_para.SENSOR.reg[iI].addr, camera_para.SENSOR.reg[iI].para);
}
for (iI = 0; iI < CCT_END_ADDR; iI++) {
write_cmos_sensor(camera_para.SENSOR.cct[iI].addr, camera_para.SENSOR.cct[iI].para);
}
} /* camera_para_to_sensor */
/*************************************************************************
* FUNCTION
* sensor_to_camera_para
*
* DESCRIPTION
* This function read back sensor's register values to camera_para structure
*
* PARAMETERS
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void sensor_to_camera_para(void)
{
} /* sensor_to_camera_para */
//------------------------Engineer mode---------------------------------
/********************************************************
* Engineer mode is unnecessary for YUV sensor driver *
********************************************************/
void get_sensor_group_count(kal_int32 *pGroupCount)
{
}
void get_sensor_group_info(kal_uint16 group_idx, kal_int8* group_name_ptr, kal_int32* item_count_ptr)
{
}
void get_sensor_item_info(kal_uint16 group_idx,kal_uint16 item_idx, ENG_sensor_info* info_ptr)
{
}
kal_bool set_sensor_item_info(kal_uint16 group_idx, kal_uint16 item_idx, kal_int32 item_value)
{
return KAL_TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -