#include "xm_type.h" #include "xm_comm_isp.h" #include "xm_comm_sns.h" #include "xm_sns_ctrl.h" #include "mpi_isp.h" #include "mpi_ae.h" #include "mpi_awb.h" #include "xm_awb_comm.h" #include "Camera.h" #include "xm_print.h" #include "X80_cmos.h" ISP_CMOS_SNS_ATTR_S gstSnsAttr = {0}; XM_U32 gu32ShutNow = 100; XM_U32 gau32AllGain = 16; XM_U8 gu8Fps; void (*pfn_gainLogic)(XM_U32 u32AllGain) = NULL; void (*pfn_shutLogic)(XM_U32 u32IntTime) = NULL; #ifdef SOC_NONE #include "xm540_tmp.h" #else #include "xm510_tmp.h" #endif extern unsigned char gSnsDevAddr; // 0x20 extern unsigned int gSnsRegAddrByte; // 0x2 extern unsigned int gSnsRegDataByte; // 0x2 extern unsigned char gAppEncoderinfo; //0:Ahd; 1:Tvi 2:Cvi static cmos_ecd_call cmos_ecd_ptr=NULL ; XM_SENSOR_CHIP gSensorChip = SENSOR_CHIP_UNKNOW; XM_U8 gu8Resolution = 1<(ISP_NUM_MAX-1))?(ISP_NUM_MAX-1):IspDev); sensor_init(); stAeRegister.stSnsExp.pfn_cmos_fps_get = NULL; switch(gSensorChip) { #ifdef SENS_X80_APOLLO case SENSOR_CHIP_APOLLO: cmos_init_sensor_exp_function_apollo(&(stIspRegister.stSnsExp)); cmos_init_ae_exp_function_apollo(&(stAeRegister.stSnsExp)); cmos_init_awb_exp_function_apollo(&(stAwbRegister.stSnsExp)); break; #endif default: break; } s32Ret = XM_MPI_ISP_SensorRegCallBack((XM_S32)gSensorChip, (const ISP_SENSOR_REGISTER_S * const)&stIspRegister); if (s32Ret) { ERR("sensor register callback function failed!\n"); return s32Ret; } stLib.s32Id = (XM_S32)gSensorChip; XM_MPI_ISP_Memncpy((XM_U8*)stLib.acLibName, (XM_U8*)XM_AE_LIB_NAME, sizeof(XM_AE_LIB_NAME)); s32Ret = XM_MPI_AE_SensorRegCallBack(IspDev, &stLib, (XM_S32)gSensorChip, &stAeRegister); if (s32Ret) { ERR("sensor register callback function to ae lib failed!\n"); return s32Ret; } stLib.s32Id = (XM_S32)gSensorChip; XM_MPI_ISP_Memncpy((XM_U8*)stLib.acLibName, (XM_U8*)XM_AWB_LIB_NAME, sizeof(XM_AWB_LIB_NAME)); s32Ret = XM_MPI_AWB_SensorRegCallBack(&stLib, (XM_S32)gSensorChip, &stAwbRegister); if (s32Ret) { ERR("sensor register callback function to awb lib failed!\n"); return s32Ret; } return 0; } int sensor_unregister_callback(ISP_DEV IspDev) { XM_S32 s32Ret; ALG_LIB_S stLib; IspDev = (IspDev<0)?0:((IspDev>(ISP_NUM_MAX-1))?(ISP_NUM_MAX-1):IspDev); s32Ret = XM_MPI_ISP_SensorUnRegCallBack((XM_S32)gSensorChip); if (s32Ret) { ERR("sensor unregister callback function failed!\n"); return s32Ret; } stLib.s32Id = (XM_S32)gSensorChip; s32Ret = XM_MPI_AE_SensorUnRegCallBack(IspDev, &stLib, (XM_S32)gSensorChip); if (s32Ret) { ERR("sensor unregister callback function to ae lib failed!\n"); return s32Ret; } return 0; } int sensor_mode_set(XM_U8 u8Mode) { if(u8Mode & (1<< RSLTION_BIT_1080P)) gu8Resolution = 1<dev_addr = gSnsDevAddr; pstI2CData->addr_byte_num = gSnsRegAddrByte; pstI2CData->data_byte_num = gSnsRegDataByte; return gSensorChip; } void sensor_set_chip(XM_S32 s32SnsChip) { switch(s32SnsChip) { case SENSOR_CHIP_K03: gSnsDevAddr = 0x40; gSnsRegAddrByte = 0x1; gSnsRegDataByte = 0x1; break; case SENSOR_CHIP_IMX335: gSnsDevAddr = 0x1A; gSnsRegAddrByte = 0x2; gSnsRegDataByte = 0x1; break; case SENSOR_CHIP_SC5235: case SENSOR_CHIP_SC5300: case SENSOR_CHIP_SC5239: case SENSOR_CHIP_APOLLO: gSnsDevAddr = 0x30; gSnsRegAddrByte = 0x2; gSnsRegDataByte = 0x1; break; default: ERR("sensor_set_chip not support this sensor!\n"); break; } gSensorChip = s32SnsChip; } int sensor_get_temp(XM_S16 *ps16Temp) { return XM_SUCCESS; } int sensor_set_ob(XM_U16 u16Ob) { return XM_SUCCESS; } void sensor_set_dnMode(XM_U8 u8Mode) { ; } int sensor_set_encoderinfo(XM_U8 *u8pDta) { if(u8pDta == NULL) return XM_FAILURE; gAppEncoderinfo = *u8pDta; if(cmos_ecd_ptr != NULL) cmos_ecd_ptr(*u8pDta); return XM_SUCCESS; } int sensor_get_encoderinfo(XM_U8 *u8pDta) { if(u8pDta == NULL) return XM_FAILURE; *u8pDta = gAppEncoderinfo ; return XM_SUCCESS; } void sensor_set_fps(XM_U8 channel , XM_U8 frame) { return; } /************************************************************************************* 输入参数:u8Mode 0x00: AHD 0x01: CVI 0x02: TVI 0x03: CVBS 0x10: XVI *************************************************************************************/ void sensor_set_isp_para(XM_U8 u8Mode) { ; } /************************************************************************************* 输入参数: u8Mode(0:Stop 1:Restart) *************************************************************************************/ void sensor_restart(XM_U8 u8Mode) { return; } XM_S32 cmos_set_sns_attr(ISP_CMOS_SNS_ATTR_S *pstSnsAttr) { if(pstSnsAttr == NULL) { ERR("cmos_set_sns_attr failed!\n"); return XM_FAILURE; } XM_MPI_ISP_Memncpy((XM_U8*)&gstSnsAttr, (XM_U8*)pstSnsAttr, sizeof(ISP_CMOS_SNS_ATTR_S)); return XM_SUCCESS; } XM_S32 cmos_get_sns_attr(ISP_CMOS_SNS_ATTR_S *pstSnsAttr) { if(pstSnsAttr == NULL) { ERR("cmos_get_sns_attr failed!\n"); return XM_FAILURE; } XM_MPI_ISP_Memncpy((XM_U8*)pstSnsAttr, (XM_U8*)&gstSnsAttr, sizeof(ISP_CMOS_SNS_ATTR_S)); return XM_SUCCESS; }