示例#1
0
//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;
}
示例#2
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;
}
示例#3
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;
}
示例#4
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;
}
示例#5
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;
}
示例#6
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;
}
示例#7
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;
}
示例#8
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;
}
示例#9
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;
}
示例#10
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;
}
示例#11
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;
}
示例#12
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;
}
示例#13
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;
}
示例#14
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;
}
示例#16
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;
}
示例#17
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;
}
示例#18
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];
}
示例#19
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;
}