//exporuse: us , ad_gain; 100 means 1x //rdn mode: 0 single frame; 1 multi frames //motion state: true/flase int camera_agent_take_pictures(sensor_index_t sensor_index, u8 size_index,u8 hv_flip, u32 exposure,u32 ad_gain,u8 rdn_mode,u8 motion_state) //int camera_agent_take_pictures(sensor_index_t sensor_index, u8 size_index,u8 hv_flip, u32 exposure,u32 ad_gain) { u16 OpCode = ISPCMD_CAMERA_TAKEPICTURES; u32 cmd; u8 buf[16]={0}; int errorcode; print_info("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[sensor_index] = 1; //which sensor on buf[3] = 1; //always continous mode buf[4] = size_index; //sensor reslutiion size index buf[5] = hv_flip; buf[6] = exposure; buf[7] = exposure>>8; buf[8] = exposure>>16; buf[9] = exposure>>24; buf[10] = ad_gain; buf[11] = ad_gain>>8; buf[12] = ad_gain>>16; buf[13] = ad_gain>>24; buf[14] = rdn_mode; buf[15] = motion_state; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_ae_mode(sensor_index_t sensor_index,AE_mode mode) { u16 OpCode = ISPCMD_BASIC_SET_AEMODE; u32 cmd; u8 buf[3]={0}; int errorcode; print_debug("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); if(mode>=MODE_MAX) { print_error("unsupport sence mode = %d set default sence auto",mode); mode = AUTO_MODE; } buf[0] = mode; buf[1] = mode; buf[2] = mode; print_debug("mode = %d ", buf[sensor_index]); errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_scene_mode(sensor_index_t sensor_index,camera_scene scene) { u16 OpCode = ISPCMD_BASIC_SET_SCENEMODE; u32 cmd; u8 buf[3]={0}; int errorcode; static camera_scene old_scene = CAMERA_SCENE_MAX; print_debug("Enter Function:%s ", __func__); /* don't handle duplicated scene */ if (scene == old_scene) return 0; else old_scene = scene; cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); if(scene>14) { print_error("unsupport sence mode = %d set default sence auto",scene); scene = 0; } buf[0] = scene; buf[1] = scene; buf[2] = scene; print_debug("awb = %d ", buf[sensor_index]); errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_DIGTIALZOOMLEVEL(u16 startx,u16 starty,u16 width,u16 height,sensor_index_t sensor_index) { u16 OpCode = ISPCMD_BASIC_SET_DIGTIALZOOMLEVEL; u32 cmd; u8 buf[9]={0}; int errorcode; print_info("Enter Function:%s [%d,%d,%d,%d]", __func__,startx,starty,width,height); sensor_index = remap_sensor_index(sensor_index); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); buf[0] = startx; buf[1] = startx>>8; buf[2] = starty; buf[3] = starty>>8; buf[4] = width; buf[5] = width>>8; buf[6] = height; buf[7] = height>>8; buf[8] = sensor_index; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_get_sensormode(sensor_index_t sensor_index,u8 *size_index) { u16 OpCode = ISPCMD_CAMERA_GET_SENSORMODE; u32 cmd; u8 buf[6] = {0}; int errorcode; print_debug("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,GET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } *size_index = buf[sensor_index*2+1]; return 0; }
int camera_agent_set_awb(sensor_index_t sensor_index,camera_white_balance awb_mode) { u16 OpCode = ISPCMD_BASIC_SET_WHITEBALANCE; u32 cmd; u8 buf[3]={0}; int errorcode; print_debug("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); switch (awb_mode) { case CAMERA_WHITEBALANCE_AUTO: awb_mode = 0; break; case CAMERA_WHITEBALANCE_INCANDESCENT: awb_mode = 1; break; case CAMERA_WHITEBALANCE_FLUORESCENT: awb_mode = 2; break; case CAMERA_WHITEBALANCE_DAYLIGHT: awb_mode = 3; break; case CAMERA_WHITEBALANCE_CLOUDY_DAYLIGHT: awb_mode = 4; break; default: awb_mode = 0; break; } buf[0] = awb_mode; buf[1] = awb_mode; buf[2] = awb_mode; print_debug("awb = %d ", buf[sensor_index]); errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_PreviewAWBLock(sensor_index_t sensor_index,u8 onoff) { u16 OpCode = ISPCMD_CAMERA_PREVIEW_DISABLE_AWB; u32 cmd; u8 buf[2] ={0}; int errorcode; print_debug("Enter Function:%s onoff = %s", __func__,onoff?"disable":"enable"); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[0] = sensor_index; buf[1] = onoff; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_AFlevel(sensor_index_t sensor_index,u8 level) { u16 OpCode = ISPCMD_BASIC_SET_AFLEVEL; u32 cmd; u8 buf[2] = {0}; int errorcode; print_debug("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[0] = level; buf[1] = sensor_index; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
//onoff 0:disable s1 ae 1:enable s1 ae int camera_agent_set_s1_AE_enable(sensor_index_t sensor_index,u8 onoff) { u16 OpCode = ISPCMD_BASIC_SET_AUTOEXPOSURE; u32 cmd; u8 buf[3]={0}; int errorcode; print_info("Enter Function:%s %s", __func__,onoff?"enable":"diable"); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[0] = onoff; buf[1] = onoff; buf[2] = onoff; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_s1_lock(sensor_index_t sensor_index) { u16 OpCode = ISPCMD_CAMERA_TAKES1LOCK; u32 cmd; u8 buf[3]={0}; int errorcode; print_info("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[0] = 1;//on buf[1] = 1;//on buf[2] = 1;//on errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_sensormode(sensor_index_t sensor_index,u8 size_index,u8 hv_flip) { u16 OpCode = ISPCMD_CAMERA_SET_SENSORMODE; u32 cmd; u8 buf[7] ={0}; int errorcode; print_info("Enter Function:%s mode=%d hv_flip = %x", __func__, size_index,hv_flip); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[sensor_index*2] = 1;//on buf[sensor_index*2+1] = size_index; buf[6] = hv_flip; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_streamonoff(sensor_index_t sensor_index, u8 state) { u16 OpCode = ISPCMD_CAMERA_PREVIEWSTREAMONOFF; u32 cmd; u8 buf[3] = {0,0,0}; int errorcode; print_info("Enter Function:%s=[%s]", __func__, state?"on":"off"); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[sensor_index] = state; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_fast_shot_mode(sensor_index_t sensor_index,u8 mode) { u16 OpCode = ISPCMD_CAMERA_SET_FAST_SHOT_MODE; u32 cmd; u8 buf[2]={0}; int errorcode; print_info("Enter Function:%s mode = %d", __func__,mode); sensor_index = remap_sensor_index(sensor_index); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); buf[0] = sensor_index; buf[1] = mode; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
//mode 0:off 1:on 2:auto int camera_agent_set_hdr_mode(sensor_index_t sensor_index,u8 mode) { u16 OpCode = ISPCMD_BASIC_SET_HDR; u32 cmd; u8 buf[3] = {0}; int errorcode; print_debug("Enter Function:%s=[%d]", __func__, mode); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); buf[0] = mode; buf[1] = mode; buf[2] = mode; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_focusmode(sensor_index_t sensor_index,camera_focus mode) { u16 OpCode = ISPCMD_BASIC_SET_FOCUSMODE; u32 cmd; static u8 buf[3]={0}; int errorcode; print_info("Enter Function:%s mode = %d", __func__,mode); sensor_index = remap_sensor_index(sensor_index); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); mode = remap_sensor_focus_mode(mode); buf[0] = mode; buf[1] = mode; buf[2] = mode; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_ADgain(sensor_index_t sensor_index,u32 ad_gain) { u16 OpCode = ISPCMD_SYSTEM_SET_AD_GAIN; u32 cmd; u8 buf[5] = {0}; int errorcode; print_debug("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); print_debug("gain = %d ", ad_gain); buf[4] = sensor_index; buf[0] = ad_gain; buf[1] = ad_gain>>8; buf[2] = ad_gain>>16; buf[3] = ad_gain>>24; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_set_exposuretime(sensor_index_t sensor_index,u32 expotime) { u16 OpCode = ISPCMD_SYSTEM_SET_EXPO_TIME; u32 cmd; u8 buf[5] = {0}; int errorcode; print_debug("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); print_debug("expotime = %d ", expotime); buf[4] = sensor_index; buf[0] = expotime; buf[1] = expotime>>8; buf[2] = expotime>>16; buf[3] = expotime>>24; errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }
int camera_agent_get_AFlevel(sensor_index_t sensor_index) { u16 cmd = ISPCMD_BASIC_GET_AFLEVEL; u8 buf_in[1] = {0}; u8 buf_rev[2] = {0}; int errorcode; print_debug("Enter Function:%s ", __func__); sensor_index = remap_sensor_index(sensor_index); buf_in[0] = sensor_index; errorcode = misp_exec_inout_cmd(cmd,buf_in, sizeof(buf_in), buf_rev, sizeof(buf_rev)); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } if(sensor_index != buf_rev[1]) { print_error("%s fail, receive sensor index = %d is not match", __func__, buf_rev[1]); return -1; } return buf_rev[0]; }
int camera_agent_set_EV(sensor_index_t sensor_index,int ev) { u16 OpCode = ISPCMD_BASIC_SET_EXPOSURECOMPENSATION; u32 cmd; u8 buf[3]={0}; int errorcode; print_debug("Enter Function:%s ", __func__); cmd = misp_construct_opcode(OpCode,SET_CMD,sizeof(buf)); sensor_index = remap_sensor_index(sensor_index); ev = 3*ev+6; buf[0] = ev; buf[1] = ev; buf[2] = ev; print_debug("ev = %d ", buf[sensor_index]); errorcode = misp_exec_cmd(cmd,buf); if (errorcode) { print_error("%s fail, error code = %d", __func__, errorcode); return -1; } return 0; }