📄 cam_msg_handler.c
字号:
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 + -