LOCAL uint32_t OV9660_Identify(uint32_t param)
{
#define OV9660_PID_VALUE	0x96	
#define OV9660_PID_ADDR 	0x0A
#define OV9660_VER_VALUE	0x63	
#define OV9660_VER_ADDR 	0x0B
        	
        uint8_t pid_value = 0;
        uint8_t ver_value = 0;
        BOOLEAN ret_value = 0XFF;

        pid_value =  Sensor_ReadReg(OV9660_PID_ADDR);
        // Get Version Code	
        ver_value =  Sensor_ReadReg(OV9660_VER_ADDR);

        if(OV9660_PID_VALUE == pid_value) {
                // Get Device Code		
                if(OV9660_VER_VALUE == ver_value) {
                        SENSOR_PRINT("That is OV9660 sensor !");		
                } else {
                        SENSOR_PRINT("OV9660_Identify: That is OV%x%x sensor !", pid_value, ver_value);
                }
                ret_value = 0;
        }
        SENSOR_PRINT("OV9660_Identify: PID = %x, VER = %x",pid_value, ver_value);	
        return (uint32_t)ret_value;
}
LOCAL uint32_t _ov8830_Identify(uint32_t param)
{
#define ov8830_PID_VALUE    0x88
#define ov8830_PID_ADDR     0x300A
#define ov8830_VER_VALUE    0x30
#define ov8830_VER_ADDR     0x300B

	uint8_t pid_value = 0x00;
	uint8_t ver_value = 0x00;
	uint32_t ret_value = SENSOR_FAIL;

	SENSOR_PRINT("SENSOR_ov8830: mipi raw identify\n");

	pid_value = Sensor_ReadReg(ov8830_PID_ADDR);
	if (ov8830_PID_VALUE == pid_value) {
		ver_value = Sensor_ReadReg(ov8830_VER_ADDR);
		SENSOR_PRINT("SENSOR_ov8830: Identify: PID = %x, VER = %x", pid_value, ver_value);
		if (ov8830_VER_VALUE == ver_value) {
			Sensor_InitRawTuneInfo();
			ret_value = SENSOR_SUCCESS;
			SENSOR_PRINT("SENSOR_ov8830: this is ov8830 sensor !");
		} else {
			SENSOR_PRINT("SENSOR_ov8830: Identify this is OV%x%x sensor !", pid_value, ver_value);
		}
	} else {
		SENSOR_PRINT("SENSOR_ov8830: identify fail,pid_value=%d", pid_value);
	}
	return ret_value;
}
LOCAL uint32_t _ov8830_write_exposure(uint32_t param)
{
	uint32_t ret_value = SENSOR_SUCCESS;
	SENSOR_PRINT("SENSOR_ov8830: _ov8830_write_exposure= 0x%x", param);

	return ret_value;
}
LOCAL uint32_t set_OV9660_ev(uint32_t level)
{
        uint16_t i;    
        SENSOR_REG_T* sensor_reg_ptr = (SENSOR_REG_T*)OV9660_ev_tab[level];

        if(level >= 7) {
                SENSOR_PRINT("set_OV9660_ev:param error,level=%d .\n",level);
                return SENSOR_FAIL;
        }
        for(i = 0;(0xFF != sensor_reg_ptr[i].reg_addr) || (0xFF != sensor_reg_ptr[i].reg_value); i++) {
                Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
        }
        msleep(100);
        SENSOR_PRINT("SENSOR: set_ev: level = %d", level);
        return 0;
}
LOCAL uint32_t _ov8830_PowerOn(uint32_t power_on)
{
	SENSOR_AVDD_VAL_E dvdd_val = g_ov8830_mipi_raw_info.dvdd_val;
	SENSOR_AVDD_VAL_E avdd_val = g_ov8830_mipi_raw_info.avdd_val;
	SENSOR_AVDD_VAL_E iovdd_val = g_ov8830_mipi_raw_info.iovdd_val;
	BOOLEAN power_down = g_ov8830_mipi_raw_info.power_down_level;
	BOOLEAN reset_level = g_ov8830_mipi_raw_info.reset_pulse_level;

	if (SENSOR_TRUE == power_on) {
		Sensor_PowerDown(power_down);
		// Open power
		Sensor_SetMonitorVoltage(SENSOR_AVDD_2800MV);
		Sensor_SetVoltage(dvdd_val, avdd_val, iovdd_val);
		usleep(20*1000);
		Sensor_SetMCLK(SENSOR_DEFALUT_MCLK);
		usleep(10*1000);
		Sensor_PowerDown(!power_down);
		// Reset sensor
		Sensor_Reset(reset_level);
	} else {
		Sensor_PowerDown(power_down);
		Sensor_SetMCLK(SENSOR_DISABLE_MCLK);
		Sensor_SetVoltage(SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED, SENSOR_AVDD_CLOSED);
		Sensor_SetMonitorVoltage(SENSOR_AVDD_CLOSED);
	}
	SENSOR_PRINT("SENSOR_ov8830: _ov8830_Power_On(1:on, 0:off): %d", power_on);
	return SENSOR_SUCCESS;
}
LOCAL uint32_t _ov8830_after_snapshot(uint32_t param)
{
	SENSOR_PRINT("SENSOR_ov8830: after_snapshot mode:%d", param);


	return SENSOR_SUCCESS;
}
LOCAL uint32_t _ov8830_write_gain(uint32_t param)
{
	uint32_t ret_value = SENSOR_SUCCESS;
	uint16_t value=0x00;
	SENSOR_PRINT("SENSOR_ov8830: _ov8830_write_gain = 0x%x", param);

	return ret_value;
}
LOCAL uint32_t _ov8830_flash(uint32_t param)
{
	SENSOR_PRINT("Start:param=%d", param);

	SENSOR_PRINT_HIGH("end");

	return SENSOR_SUCCESS;
}
LOCAL uint32_t _ov8830_StreamOn(uint32_t param)
{
	SENSOR_PRINT("SENSOR_ov8830: StreamOn");

	Sensor_WriteReg(0x0100, 0x01);

	return 0;
}
LOCAL uint32_t set_OV9660_awb(uint32_t mode)
{
        uint16_t i;
        SENSOR_REG_T* sensor_reg_ptr = (SENSOR_REG_T*)OV9660_awb_tab[mode];

        if(mode >= 7) {
                SENSOR_PRINT("set_OV9660_awb:param error,mode=%d\n",mode);
                return SENSOR_FAIL;
        }

        for(i = 0; (0xFF != sensor_reg_ptr[i].reg_addr) || (0xFF != sensor_reg_ptr[i].reg_value); i++) {
                Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
        }
        msleep(100); 
        SENSOR_PRINT("SENSOR: set_awb_mode: mode = %d", mode);
        return 0;
}
Exemplo n.º 11
0
LOCAL uint32_t _BF3905_StreamOff(uint32_t param)
{
	SENSOR_PRINT("SENSOR: _BF3905_StreamOff");
	int 	ret = 0;
	ret = Sensor_WriteReg(0x09, 0x01);  //81
		SENSOR_Sleep(20);

	return ret;
}
LOCAL uint32_t _ov8830_StreamOff(uint32_t param)
{
	SENSOR_PRINT("SENSOR_ov8830: StreamOff");

	Sensor_WriteReg(0x0100, 0x00);
	usleep(50*1000);

	return 0;
}
LOCAL uint32_t _ov8830_BeforeSnapshot(uint32_t param)
{
	uint32_t rtn = SENSOR_SUCCESS;
	param = param & 0xffff;

	SENSOR_PRINT("SENSOR_ov8830: BeforeSnapshot : %d",param);



	return SENSOR_SUCCESS;
}
Exemplo n.º 14
0
LOCAL uint32_t _BF3905_StreamOn(uint32_t param)
{
	SENSOR_PRINT("SENSOR: _BF3905_StreamOn");
	int 	ret = 0;
	uint16_t     read_val = 0;
	ret = Sensor_WriteReg(0x09, 0x01);
		SENSOR_Sleep(20);
	
	//SENSOR_PRINT("SENSOR: read_BF3905, reg:0x3012  val: 0x%x.\n", read_val);
	return ret;
}
Exemplo n.º 15
0
LOCAL uint32_t _BF3905_After_Snapshot(uint32_t param)
{
	SENSOR_PRINT("SENSOR: _BF3905_After_Snapshot =%d \n",param); 
        
  
        
    //   BF3905_WriteReg(0x1b,0x2e);
       BF3905_WriteReg(0x13,0x07);
	SENSOR_Sleep(100);
	Sensor_SetMode(param);

	return SENSOR_SUCCESS;
}
LOCAL uint32_t OV9660_set_ae_enable(uint32_t enable)
{
	unsigned char value;
	
	SENSOR_PRINT("OV9660_set_ae_enable: enable = %d", enable);
	
	value = Sensor_ReadReg(0x13);
	value &= 0xFE;
	value |= enable;
	Sensor_WriteReg(0x13, value);
	
	return 0;
}
LOCAL uint32_t _ov7675_PowerOn(uint32_t power_on)
{
	SENSOR_AVDD_VAL_E dvdd_val = g_OV7675_yuv_info.dvdd_val;
	SENSOR_AVDD_VAL_E avdd_val = g_OV7675_yuv_info.avdd_val;
	SENSOR_AVDD_VAL_E iovdd_val = g_OV7675_yuv_info.iovdd_val;
	BOOLEAN power_down = g_OV7675_yuv_info.power_down_level;
	BOOLEAN reset_level = g_OV7675_yuv_info.reset_pulse_level;
	//uint32_t reset_width=g_ov5640_yuv_info.reset_pulse_width;

	SENSOR_PRINT("dvdd_val %d, dvdd_val %d, avdd_val %d, iovdd_val %d",
			power_on,
			dvdd_val,
			avdd_val,
			iovdd_val);
	SENSOR_PRINT("power_down %d reset_level %d", power_down, reset_level);

	if (SENSOR_TRUE == power_on) {
		Sensor_PowerDown(power_down);
		usleep(10*1000);
		Sensor_SetIovddVoltage(iovdd_val);
		usleep(5*1000);
		Sensor_SetAvddVoltage(avdd_val);
		usleep(5*1000);
		Sensor_SetMCLK(SENSOR_DEFALUT_MCLK);
		Sensor_PowerDown(!power_down);
		usleep(20*1000);
	} else {
		Sensor_PowerDown(power_down);
		usleep(2*1000);
		Sensor_SetMCLK(SENSOR_DISABLE_MCLK);
		usleep(2*1000);
		Sensor_SetAvddVoltage(SENSOR_AVDD_CLOSED);
		Sensor_SetIovddVoltage(SENSOR_AVDD_CLOSED);
		usleep(20*1000);
	}
	SENSOR_PRINT("(1:on, 0:off): %d", power_on);
	return SENSOR_SUCCESS;
}
LOCAL uint32_t set_OV9660_video_mode(uint32_t mode)
{
        uint16_t i;
        SENSOR_REG_T* sensor_reg_ptr = PNULL;

        sensor_reg_ptr = (SENSOR_REG_T*)OV9660_video_mode_nand_tab[mode];

        for(i = 0; (0xFF != sensor_reg_ptr[i].reg_addr)|| (0xFF != sensor_reg_ptr[i].reg_value); i++) {
                Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
        }
        msleep(100); 
        SENSOR_PRINT("SENSOR: set_vodeo_mode: %d ",mode);
        return 0;
}
LOCAL uint32_t set_brightness(uint32_t level)
{
        uint16_t i;
        SENSOR_REG_T* sensor_reg_ptr = (SENSOR_REG_T*)ov7675_brightness_tab[level];

		SENSOR_PRINT("0x%x.",OV7675_ReadReg(0x1e));

        if(level>6)
                return 0;

        for(i = 0; (0xFF != sensor_reg_ptr[i].reg_addr) && (0xFF != sensor_reg_ptr[i].reg_value); i++) {
                OV7675_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
        }
        return 0;
}
Exemplo n.º 20
0
LOCAL uint32_t _BF3905_set_anti_flicker(uint32_t mode)
{

        
	SENSOR_REG_T_PTR sensor_reg_ptr=(SENSOR_REG_T_PTR)BF3905_anti_banding_flicker_tab[mode];
	uint16_t i=0x00;
        
	for(i=0x0; (0xff!=sensor_reg_ptr[i].reg_addr)||(0xff!=sensor_reg_ptr[i].reg_value); i++)
	{
		Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
	}

	SENSOR_PRINT("SENSOR: _BF3905_set_anti_flicker = 0x%02x \n", mode);

	return 0;
}
LOCAL uint32_t set_OV9660_anti_flicker(uint32_t mode)
{//107 us
	uint16_t i;
	SENSOR_REG_T* sensor_reg_ptr = (SENSOR_REG_T*)OV9660_banding_flicker_tab[mode];

	//    SCI_ASSERT(PNULL != sensor_reg_ptr);

	for(i = 0; (0xFF != sensor_reg_ptr[i].reg_addr)|| (0xFF != sensor_reg_ptr[i].reg_value); i++)
	{
		Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
	}

	msleep(100); 
	SENSOR_PRINT("SENSOR: set_OV9660_flicker: 0x%x .\n", mode);
	return 0;
}
Exemplo n.º 22
0
LOCAL uint32_t _BF3905_set_ev(uint32_t level)
{

        
	SENSOR_REG_T_PTR sensor_reg_ptr=(SENSOR_REG_T_PTR)BF3905_ev_tab[level];
	uint16_t i=0x00;
        
	if(level>6)
		return 0;

	for(i=0x00; (0xff!=sensor_reg_ptr[i].reg_addr)||(0xFF!=sensor_reg_ptr[i].reg_value); i++)
	{
		Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
	}

	SENSOR_PRINT("SENSOR: _BF3905_set_ev = 0x%02x \n", level);
	return 0;
}
Exemplo n.º 23
0
LOCAL uint32_t _BF3905_set_brightness(uint32_t level)
{
	uint16_t i=0x00;
	uint32_t reg_bits = 0;
	uint32_t reg_value = 0;
            
	SENSOR_REG_T* sensor_reg_ptr=(SENSOR_REG_T*)BF3905_brightness_tab[level];

	if(level>6)
		return 0;

	for(i=0x00; (0xff!=sensor_reg_ptr[i].reg_addr)||(0xff!=sensor_reg_ptr[i].reg_value); i++)
	{
			Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
	}

	SENSOR_PRINT("SENSOR: _BF3905_set_brightness = 0x%02x,data=0x%x .\n", level,reg_value);
	return 0;
}
LOCAL uint32_t OV9660_set_preview_mode(uint32_t preview_mode)
{
        SENSOR_PRINT("set_preview_mode: preview_mode = %d", preview_mode);

        switch (preview_mode) {
        case SENSOR_PARAM_ENVIRONMENT_NORMAL: 
                OV9660_set_work_mode(0);
                break;
        case SENSOR_PARAM_ENVIRONMENT_NIGHT:
                OV9660_set_work_mode(1);
                break;
        case SENSOR_PARAM_ENVIRONMENT_SUNNY:
                OV9660_set_work_mode(0);
                break;
        default:
                break;
        }
        msleep(300);	
        return 0;
}
LOCAL uint32_t set_ov7675_video_mode(uint32_t mode)
{
        uint8_t data=0x00;
        uint8_t data1=0x00;
        uint16_t i;
        SENSOR_REG_T* sensor_reg_ptr = PNULL;
        if(mode>1)
                return 0;

        sensor_reg_ptr = (SENSOR_REG_T*)ov7675_video_mode_nand_tab[mode];

        if(PNULL == sensor_reg_ptr){
			SENSOR_PRINT("set_ov7675_video_mode: sensor_reg_ptr = NULL, return \n");
			return 0;
        }

        data=OV7675_ReadReg(OV7675_COM11);
        data&=0x0f;
        OV7675_WriteReg(OV7675_COM11,data);

        data1=OV7675_ReadReg(OV7675_REGCF);
        data1&= 0xf7 ;
        OV7675_WriteReg(OV7675_COM11,data1);

        switch(mode) {
        case 0: //DCAMERA_NORMAL_MODE:
                OV7675_WriteReg(PLL_ADDR,0x81);
                break;
        case 1: //DCAMERA_VIDEO_MODE:
                OV7675_WriteReg(PLL_ADDR,0x80);
                break;
        default :
                break;
        }

        for(i = 0; (0xFF != sensor_reg_ptr[i].reg_addr) || (0xFF != sensor_reg_ptr[i].reg_value); i++) {
                OV7675_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
        }
        SENSOR_TRACE("SENSOR: set_video_mode: mode = %d", mode);
        return 0;
}
Exemplo n.º 26
0
LOCAL uint32_t _BF3905_set_awb(uint32_t mode)
{
	uint16_t i=0x00;
	uint32_t reg_bits = 0;
	uint32_t reg_value = 0;
        

        
	SENSOR_REG_T* sensor_reg_ptr=(SENSOR_REG_T*)BF3905_awb_tab[mode];

        
          if(mode>4)
		return 0;
		  
	for(i=0; (0xff!=sensor_reg_ptr[i].reg_addr)||(0xFF!=sensor_reg_ptr[i].reg_value); i++)
	{
			Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
	}

	SENSOR_PRINT("SENSOR: _BF3905_set_awb = 0x%02x,reg_value=0x%x \n", mode,reg_value);
	return 0;
}
Exemplo n.º 27
0
LOCAL uint32_t _BF3905_set_contrast(uint32_t level)
{
	uint16_t i=0x00;
	uint32_t reg_bits = 0;
	uint32_t reg_value = 0;

        
	SENSOR_REG_T* sensor_reg_ptr=(SENSOR_REG_T*)BF3905_contrast_tab[level];
        
	if(level>6)
		return 0;

	for(i=0x00; (0xff!=sensor_reg_ptr[i].reg_addr)||(0xFF!=sensor_reg_ptr[i].reg_value); i++)
	{
			Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);
	}

	//Sensor_SetSensorExifInfo(SENSOR_EXIF_CTRL_CONTRAST, (uint32)level);

	SENSOR_PRINT("SENSOR: _BF3905_set_contrast = 0x%02x,data=0x%x .\n", level,reg_value);
	return 0;
}
Exemplo n.º 28
0
LOCAL uint32_t _BF3905_set_image_effect(uint32_t effect_type)
{
	uint16_t i=0x00;
	uint32_t reg_bits = 0;
	uint32_t reg_value = 0;

        
	SENSOR_REG_T* sensor_reg_ptr=(SENSOR_REG_T*)BF3905_image_effect_tab[effect_type];
        
	if(effect_type>7)
		return 0;

	for(i=0x00; (0xff!=sensor_reg_ptr[i].reg_addr)||(0xff!=sensor_reg_ptr[i].reg_value); i++)
	{

			Sensor_WriteReg(sensor_reg_ptr[i].reg_addr, sensor_reg_ptr[i].reg_value);

	}

	SENSOR_PRINT("SENSOR: _BF3905_set_image_effect = 0x%02x,data=0x%x \n", effect_type,reg_value);
	return 0;
}
Exemplo n.º 29
0
LOCAL uint32_t _BF3905_BeforeSnapshot(uint32_t sensor_snapshot_mode)
{		
     sensor_snapshot_mode &= 0xffff;
	 Sensor_SetMode(sensor_snapshot_mode);
	Sensor_SetMode_WaitDone();
	switch (sensor_snapshot_mode) {
	case SENSOR_MODE_PREVIEW_ONE:    //VGA
		SENSOR_PRINT("Capture VGA Size");
		 BF3905_WriteReg(0x13,0x02);
		SENSOR_Sleep(200);

		break;
	case SENSOR_MODE_SNAPSHOT_ONE_FIRST:  // 1.3 M
		{
	//	BF3905_set_shutter();	
	       BF3905_WriteReg(0x13,0x02);
		SENSOR_Sleep(450);  ///300
	//	SENSOR_PRINT("Capture 1.3M&2M Size");
		break; 
		}
	case SENSOR_MODE_SNAPSHOT_ONE_SECOND: // 2 M
		{
	//	BF3905_set_shutter();	
	       BF3905_WriteReg(0x13,0x02);
		SENSOR_Sleep(450);  ///300
	//	SENSOR_PRINT("Capture 1.3M&2M Size");
		break; 
		}

		
	default:
		break;
	}

	return 0;
}
LOCAL uint32_t _ov8830_GetResolutionTrimTab(uint32_t param)
{
	SENSOR_PRINT("0x%x",  (uint32_t)s_ov8830_Resolution_Trim_Tab);
	return (uint32_t) s_ov8830_Resolution_Trim_Tab;
}