⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cam_msg_handler.c

📁 MTK6225 支持的200W像素的代码
💻 C
📖 第 1 页 / 共 5 页
字号:
        res = MED_RES_DISC_FULL;
    }

    /* to release the memory allocated in MED_MODE_BUFFER mode */
    CAM_FREE_CAPTURE_BUFFER();
    return res;

}


/*****************************************************************************
 * FUNCTION
 *  cam_set_flash
 * DESCRIPTION
 *  This function is to set the flash.
 * PARAMETERS
 *  flash_mode      [IN]
 *  kal_int16 value(?)
 * RETURNS
 *  void
 *****************************************************************************/
kal_int16 cam_set_flash(kal_int16 flash_mode)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
#ifdef __MTK_TARGET__
	#if defined(CAMERA_MODULE)
    ext_cam_set_parameter(CAM_PARAM_FLASH_MODE/*cam_command_map[CAM_PARAM_ZOOM_FACTOR]*/, flash_mode);  //
	#endif
#endif
    return MED_RES_OK;
}


/*****************************************************************************
 * FUNCTION
 *  cam_set_flash_req_hdlr
 * DESCRIPTION
 *  This function is to handle camera set flash request.
 * PARAMETERS
 *  ilm_ptr     [?]
 * RETURNS
 *  void
 *****************************************************************************/
void cam_set_flash_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_cam_set_flash_req_struct *req_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cam_context_p->src_mod = ilm_ptr->src_mod_id;

    req_p = (media_cam_set_flash_req_struct*) ilm_ptr->local_para_ptr;

    cam_set_flash(req_p->flash_mode);

}

#if (defined (ISP_SUPPORT) || defined(CAMERA_MODULE)) //modified by ycd for hi03
#if defined(AIT812)
void cam_preview_check(void *arg);

#if 0 //remove by ycd 2008.05.24
void cam_power_sel_dsc(void)
{
	ext_camer_module_init_sel(CAM_INIT_ID_DSC);
}

void cam_power_sel_vidrec(void)
{
	ext_camer_module_init_sel(CAM_INIT_ID_VIDREC);
}

void cam_power_sel_vidply(void)
{
	ext_camer_module_init_sel(CAM_INIT_ID_VIDPLY);
}

void cam_sensor_sel_m(void)
{
	ext_camer_module_sensor_sel(SENSOR_SEL_ID_M);
}

void cam_sensor_sel_s(void)
{
	ext_camer_module_sensor_sel(SENSOR_SEL_ID_S);
}
#endif

/*****************************************************************************
 * FUNCTION
 *  cam_power_up_check
 * DESCRIPTION
 *  This function is to check the power up state.
 * PARAMETERS
 *  arg     [?]
 * RETURNS
 *  void
 *****************************************************************************/
void cam_power_up_check(void *arg)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
	SIMC_CAM_PRITNF(POWER UP CHECK);
    if (CAM_IN_STATE(CAM_POWER_UP))
    {
        if (ext_cam_is_ready())
        {
            CAM_ENTER_STATE(CAM_READY);
            cam_send_ready_ind(MED_RES_OK);
            CAM_SET_EVENT(CAM_EVT_POWER_UP);
        }
        else
        {
            ext_cam_power_off();
        #ifdef CAMERA_MODULE_WITH_LCD
	#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
            if (cam_context_p->osd_buffer_p)
            {
                med_free_ext_mem((void **)&cam_context_p->osd_buffer_p);
            }
	#endif//end#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
        #endif /* CAMERA_MODULE_WITH_LCD */

            cam_context_p->power_up_check_conut++;
            if (cam_context_p->power_up_check_conut > MAX_POWER_UP_CHECK_COUNT)
            {
                /* to release the memory allocated in MED_MODE_BUFFER mode */
                CAM_FREE_CAPTURE_BUFFER();
                CAM_SET_EVENT(CAM_EVT_POWER_UP);
                /* power up failed */
                CAM_ENTER_STATE(CAM_IDLE);
                cam_send_ready_ind(MED_RES_FAIL);
            }
            else
            {
            #ifdef CAMERA_MODULE_WITH_LCD
		#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
                cam_context_p->osd_buffer_p = (kal_uint32) med_alloc_ext_mem(LCD_WIDTH * LCD_HEIGHT * 2);
                if (cam_context_p->osd_buffer_p)
                {
                    ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
                }
		#else
		      ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
		#endif //end #if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
            #endif /* CAMERA_MODULE_WITH_LCD */
                ext_cam_power_on();
                med_start_timer(CAM_POWER_UP_TIMER, CAM_POWER_UP_INIT_TIME, cam_power_up_check, 0);
            }
        }
    }
    else if (CAM_IN_STATE(CAM_START_PREVIEW))
    {
        if (ext_cam_is_ready())
        {
            cam_context_p->preview_check_conut = 0;
            cam_context_p->preview_retry_conut++;
            cam_set_night_mode((kal_int16) cam_context_p->night_mode);
            ext_cam_start_preview(&cam_param, &lcd_param);
            cam_set_zoom_factor(cam_context_p->zoom_factor);
            cam_set_flash(cam_context_p->flash_mode);
            med_start_timer(CAM_READY_POLLING_TIMER, CAM_PREVIEW_POLLING_TIME, cam_preview_check, 0);
        }
        else
        {
            ext_cam_power_off();
        #ifdef CAMERA_MODULE_WITH_LCD
	#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
            if (cam_context_p->osd_buffer_p)
            {
                med_free_ext_mem((void **)&cam_context_p->osd_buffer_p);
            }
	#endif//end #if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
        #endif /* CAMERA_MODULE_WITH_LCD */
            cam_context_p->power_up_check_conut++;
            if (cam_context_p->power_up_check_conut > MAX_POWER_UP_CHECK_COUNT)
            {
                /* to release the memory allocated in MED_MODE_BUFFER mode */
                CAM_FREE_CAPTURE_BUFFER();
                /* preview really fail, return to MMI */
                cam_set_result(MED_RES_FAIL);
                CAM_ENTER_STATE(CAM_IDLE);
                CAM_SET_EVENT(CAM_EVT_PREVIEW);
            }
            else
            {
            #ifdef CAMERA_MODULE_WITH_LCD
		#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
                cam_context_p->osd_buffer_p = (kal_uint32) med_alloc_ext_mem(LCD_WIDTH * LCD_HEIGHT * 2);
                if (cam_context_p->osd_buffer_p)
                {
                    ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
                }
		#else
		      ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
		#endif//end #if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
            #endif /* CAMERA_MODULE_WITH_LCD */
                ext_cam_power_on();
                med_start_timer(CAM_POWER_UP_TIMER, CAM_POWER_UP_INIT_TIME, cam_power_up_check, 0);
            }
        }
    }
#ifdef __MED_MJPG_MOD__
    else if (VID_IN_STATE(VID_START_PREVIEW))
    {
        if (ext_cam_is_ready())
        {
            cam_context_p->preview_check_conut = 0;
            cam_context_p->preview_retry_conut++;
            cam_set_night_mode((kal_int16) cam_context_p->night_mode);
            ext_cam_start_preview(&cam_param, &lcd_param);
            cam_set_zoom_factor(cam_context_p->zoom_factor);
            cam_set_flash(cam_context_p->flash_mode);
            med_start_timer(CAM_READY_POLLING_TIMER, CAM_PREVIEW_POLLING_TIME, vid_preview_check, 0);
        }
        else
        {
            ext_cam_power_off();
        #ifdef CAMERA_MODULE_WITH_LCD
	#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
            if (cam_context_p->osd_buffer_p)
            {
                med_free_ext_mem((void **)&cam_context_p->osd_buffer_p);
            }
	#endif //end #if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
        #endif /* CAMERA_MODULE_WITH_LCD */
            cam_context_p->power_up_check_conut++;
            if (cam_context_p->power_up_check_conut > MAX_POWER_UP_CHECK_COUNT)
            {
                /* preview really fail, return to MMI */
                vid_set_result(MED_RES_FAIL, __LINE__);
                VID_ENTER_STATE(VID_IDLE);
                CAM_ENTER_STATE(CAM_IDLE);
                VID_SET_EVENT(VID_EVT_PREVIEW);
            }
            else
            {
            #ifdef CAMERA_MODULE_WITH_LCD
		#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
                cam_context_p->osd_buffer_p = (kal_uint32) med_alloc_ext_mem(LCD_WIDTH * LCD_HEIGHT * 2);
                if (cam_context_p->osd_buffer_p)
                {
                    ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
                }
		#else
		      ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
		#endif //end #if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
            #endif /* CAMERA_MODULE_WITH_LCD */
                ext_cam_power_on();
                med_start_timer(CAM_POWER_UP_TIMER, CAM_POWER_UP_INIT_TIME, cam_power_up_check, 0);
            }
        }
    }

#endif /* __MED_MJPG_MOD__ */

	SIMC_CAM_PRITNF(POWER UP CHECK COMPLETE);

}


/*****************************************************************************
 * FUNCTION
 *  cam_power_up_req_hdlr
 * DESCRIPTION
 *  This function is to handle power up request.
 * PARAMETERS
 *  ilm_ptr     [?]
 * RETURNS
 *  void
 *****************************************************************************/
void cam_power_up_req_hdlr_dsp(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_cam_power_up_req_struct *req_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
	SIMC_CAM_PRITNF(POWER ON REQ);
    cam_context_p->src_mod = ilm_ptr->src_mod_id;

    req_p = (media_cam_power_up_req_struct*) ilm_ptr->local_para_ptr;

    cam_context_p->seq_num = req_p->seq_num;

    if (CAM_IN_STATE(CAM_IDLE))
    {
        cam_context_p->power_up_check_conut = 0;
    #ifdef __MTK_TARGET__
    #ifdef CAMERA_MODULE_WITH_LCD
	#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
        cam_context_p->osd_buffer_p = (kal_uint32) med_alloc_ext_mem(LCD_WIDTH * LCD_HEIGHT * 2);
        if (cam_context_p->osd_buffer_p)
        {
            ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
        }
	#else
	     ext_cam_set_osd_buffer(cam_context_p->osd_buffer_p, LCD_WIDTH * LCD_HEIGHT * 2);
	#endif//#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
    #endif /* CAMERA_MODULE_WITH_LCD */
        ext_cam_power_on();
        med_start_timer(CAM_POWER_UP_TIMER, CAM_POWER_UP_INIT_TIME, cam_power_up_check, 0);
    #endif /* __MTK_TARGET__ */

        CAM_ENTER_STATE(CAM_POWER_UP);
    }
    else if (CAM_IN_STATE(CAM_READY))
    {
        med_stop_timer(CAM_POWER_DOWN_DELAY_TIMER);
        cam_send_ready_ind(MED_RES_OK);
        CAM_SET_EVENT(CAM_EVT_POWER_UP);
    }
    cam_context_p->delay_power_down = KAL_FALSE;
    /* CAM_SET_EVENT(CAM_EVT_POWER_UP); */
	SIMC_CAM_PRITNF(POWER ON REQ COMPLETE);
}


/*****************************************************************************
 * FUNCTION
 *  cam_power_down
 * DESCRIPTION
 *  This function is to power down extern camera module.
 * PARAMETERS
 *  arg     [?]
 * RETURNS
 *  void
 *****************************************************************************/
void cam_power_down(void *arg)
{
	SIMC_CAM_PRITNF(POWER DOWN);
#ifdef __MTK_TARGET__
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (CAM_IN_STATE(CAM_READY) || CAM_IN_STATE(CAM_POWER_UP))
    {
        ext_cam_power_off();
    #ifdef CAMERA_MODULE_WITH_LCD
	#if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
        if (cam_context_p->osd_buffer_p)
        {
            med_free_ext_mem((void **)&cam_context_p->osd_buffer_p);
        }
	#endif//end #if (defined(__LCD_UPDATE_BY_LCDCONTROLER__))
    #endif /* CAMERA_MODULE_WITH_LCD */
        /* to release the memory allocated in MED_MODE_BUFFER mode */
        CAM_FREE_CAPTURE_BUFFER();
        CAM_ENTER_STATE(CAM_IDLE);
        cam_context_p->delay_power_down = KAL_FALSE;
    }
#endif /* __MTK_TARGET__ */
	SIMC_CAM_PRITNF(POWER DOWN COMPLETE);
}


/*****************************************************************************
 * FUNCTION
 *  cam_power_down_req_hdlr
 * DESCRIPTION
 *  This function is to handle power down request.
 * PARAMETERS
 *  ilm_ptr     [?]
 * RETURNS
 *  void
 *****************************************************************************/
void cam_power_down_req_hdlr_dsp(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    media_cam_power_down_req_struct *req_p;

	SIMC_CAM_PRITNF(POWER DOWN REQ);
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cam_context_p->src_mod = ilm_ptr->src_mod_id;

    req_p = (media_cam_power_down_req_struct*) ilm_ptr->local_para_ptr;

    if (CAM_IN_STATE(CAM_PREVIEW) || CAM_IN_STATE(CAM_START_PREVIEW))
    {
    #ifdef __MTK_TARGET__
        med_stop_timer(CAM_READY_POLLING_TIMER);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -