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

📄 med_main.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 2 页
字号:
                aud_send_startup_cnf(MED_RES_OK);
                med_context_p->nvram_state = MED_POWERON_READING_NVRAM_FINISH;
            }
            else
            {
                ASSERT(med_context_p->nvram_state == MED_POWERON_READING_NVRAM);
            }
        #endif /* (!defined(MT6228)) */ /* not Mt6228 */

        #endif /* (!defined(MT6219)) */ /* not MT6219 */

        #endif /* ISP_SUPPORT */ 
        default:
            break;
    }
}


/*****************************************************************************
 * FUNCTION
 *  med_nvram_write_data_cnf_hdlr
 * DESCRIPTION
 *  This function is to handle nvram write data confirm.
 * PARAMETERS
 *  local_para_ptr      [?]     
 *  peer_buff_ptr       [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void med_nvram_write_data_cnf_hdlr(local_para_struct *local_para_ptr, peer_buff_struct *peer_buff_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    nvram_write_cnf_struct *parm_ptr = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    parm_ptr = (nvram_write_cnf_struct*) local_para_ptr;

    /* MED_FUNC_ENTRY(MED_NVRAM_WRITE_DATA_CNF_HDLR) */

    switch (parm_ptr->file_idx)
    {
        case NVRAM_EF_CUST_ACOUSTIC_DATA_LID:
            aud_send_set_audio_profile_cnf(MED_RES_OK);
            break;
        case NVRAM_EF_AUDIO_PARAM_LID:
            aud_send_set_audio_param_cnf(MED_RES_OK);
            break;
        default:
            break;
    }

}


/*****************************************************************************
 * FUNCTION
 *  med_startup_hdlr
 * DESCRIPTION
 *  This function is handle startup procedure of media task.
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void med_startup_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    /* start base timer */
    stack_init_timer(&med_context_p->base_timer, "MED Base Timer", MOD_MED);

    med_context_p->event_scheduler_ptr = new_evshed(
                                            &med_context_p->base_timer,
                                            med_start_base_timer,
                                            med_stop_base_timer,
                                            0,
                                            kal_evshed_get_mem,
                                            kal_evshed_free_mem,
                                            0);
    med_context_p->med_event = kal_create_event_group("med_events");

#ifdef __MED_CAM_MOD__
    cam_startup_hdlr(ilm_ptr);
#endif 
#ifdef __MED_IMG_MOD__
    img_startup_hdlr(ilm_ptr);
#endif 
#if defined (__MED_VID_MOD__) || defined (__MED_MJPG_MOD__)
    vid_startup_hdlr(ilm_ptr);
#endif 
#ifdef __MED_WEBCAM_MOD__
    webcam_startup_hdlr(ilm_ptr);
#endif 
#if defined (__MED_TVO_MOD__)
    tvo_startup_hdlr(ilm_ptr);
#endif 

    aud_startup_hdlr(ilm_ptr);

    /* start to read nvram data for media task */
    aud_startup_read_nvram_data();

}


/*****************************************************************************
 * FUNCTION
 *  med_main
 * DESCRIPTION
 *  This function is main message dispatching function of media task.
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void med_main(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (ilm_ptr->msg_id == MSG_ID_TIMER_EXPIRY)
    {
        med_timer_expiry_hdlr(ilm_ptr);
    }
    else if (ilm_ptr->msg_id == MSG_ID_MED_STARTUP_REQ)
    {
        med_startup_hdlr(ilm_ptr);
    }
    else if (ilm_ptr->msg_id == MSG_ID_MEDIA_GET_BUFFER_REQ)
    {
        med_get_buffer_req_hdlr(ilm_ptr);
    }
    else if (ilm_ptr->msg_id == MSG_ID_MEDIA_FREE_BUFFER_REQ)
    {
        med_free_buffer_req_hdlr(ilm_ptr);
    }
#ifdef TST_HANDLER
    else if (ilm_ptr->msg_id == MSG_ID_TST_INJECT_STRING)
    {
        aud_tst_handler(ilm_ptr);
    }
#endif /* TST_HANDLER */ 
#ifdef __MED_CAM_MOD__
    else if (ilm_ptr->msg_id >= MSG_ID_MED_CAM_CODE_BEGIN && ilm_ptr->msg_id <= MSG_ID_MED_CAM_CODE_END)
    {
        cam_main(ilm_ptr);
    }
#endif /* __MED_CAM_MOD__ */ 
#ifdef __MED_IMG_MOD__
    else if (ilm_ptr->msg_id >= MSG_ID_MED_IMG_CODE_BEGIN && ilm_ptr->msg_id <= MSG_ID_MED_IMG_CODE_END)
    {
        img_main(ilm_ptr);
    }
#endif /* __MED_IMG_MOD__ */ 
#if defined (__MED_VID_MOD__) || defined (__MED_MJPG_MOD__)
    else if (ilm_ptr->msg_id >= MSG_ID_MED_VID_CODE_BEGIN && ilm_ptr->msg_id <= MSG_ID_MED_VID_CODE_END)
    {
        vid_main(ilm_ptr);
    }
    else if (ilm_ptr->msg_id >= MSG_ID_MED_V_CODE_BEGIN && ilm_ptr->msg_id <= MSG_ID_MED_V_CODE_END)
    {
        vid_main(ilm_ptr);
    }
#endif /* defined (__MED_VID_MOD__) || defined (__MED_MJPG_MOD__) */ 
#ifdef __MED_WEBCAM_MOD__
    else if ((ilm_ptr->msg_id >= MSG_ID_MED_WEBCAM_CODE_BEGIN &&
              ilm_ptr->msg_id <= MSG_ID_MED_WEBCAM_CODE_END) ||
             (ilm_ptr->msg_id >= MSG_ID_USB_MED_SET_CAMERA_ATTR_REQ && ilm_ptr->msg_id <= MSG_ID_USB_MED_STOP_CNF))
    {
        webcam_main(ilm_ptr);
    }
#endif /* __MED_WEBCAM_MOD__ */ 
#ifdef __MED_TVO_MOD__
    else if (ilm_ptr->msg_id >= MSG_ID_MED_TVO_CODE_BEGIN && ilm_ptr->msg_id <= MSG_ID_MED_TVO_CODE_END)
    {
        tvo_main(ilm_ptr);
    }
#endif /* __MED_TVO_MOD__ */ 
    else if (ilm_ptr->msg_id == MSG_ID_NVRAM_READ_CNF)
    {
        med_nvram_read_data_cnf_hdlr(ilm_ptr->local_para_ptr, ilm_ptr->peer_buff_ptr);
    }
    else if (ilm_ptr->msg_id == MSG_ID_NVRAM_WRITE_CNF)
    {
        med_nvram_write_data_cnf_hdlr(ilm_ptr->local_para_ptr, ilm_ptr->peer_buff_ptr);
    }
#ifdef __MED_CTM_MOD__
    else if (ilm_ptr->msg_id >= MSG_ID_MED_CTM_CODE_BEGIN && ilm_ptr->msg_id <= MSG_ID_MED_CTM_CODE_END)
    {
        aud_ctm_main(ilm_ptr);
    }
#endif /* __MED_CTM_MOD__ */ 
    else
    {
        aud_main(ilm_ptr);
    }
}


/*****************************************************************************
 * FUNCTION
 *  med_task_main
 * DESCRIPTION
 *  This function is main function of media task.
 * PARAMETERS
 *  task_entry_ptr      [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void med_task_main(task_entry_struct *task_entry_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    ilm_struct current_ilm;
    kal_uint32 my_index;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    kal_get_my_task_index(&my_index);

    while (1)
    {
        receive_msg_ext_q(task_info_g[task_entry_ptr->task_indx].task_ext_qid, &current_ilm);
        stack_set_active_module_id(my_index, current_ilm.dest_mod_id);

        med_main((void*)&current_ilm);

        free_ilm(&current_ilm);
    }

}


/*****************************************************************************
 * FUNCTION
 *  med_init
 * DESCRIPTION
 *  This function is used to init media task.
 * PARAMETERS
 *  task_indx       [IN]        
 * RETURNS
 *  
 *****************************************************************************/
kal_bool med_init(task_indx_type task_indx)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    med_context_p->int_mem_p = med_int_mem;
    med_context_p->ext_mem_p = med_ext_mem;

    if (!aud_init())
    {
        return KAL_FALSE;
    }

#ifdef __MED_IMG_MOD__
    if (!img_init())
    {
        return KAL_FALSE;
    }
#endif /* __MED_IMG_MOD__ */ 
#ifdef __MED_CAM_MOD__
    if (!cam_init())
    {
        return KAL_FALSE;
    }
#endif /* __MED_CAM_MOD__ */ 
#if defined (__MED_VID_MOD__) || defined (__MED_MJPG_MOD__)
    if (!vid_init())
    {
        return KAL_FALSE;
    }
#endif /* defined (__MED_VID_MOD__) || defined (__MED_MJPG_MOD__) */ 
#ifdef __MED_WEBCAM_MOD__
    if (!webcam_init())
    {
        return KAL_FALSE;
    }
#endif /* __MED_WEBCAM_MOD__ */ 
#if defined (__MED_TVO_MOD__)
    if (!tvo_init())
    {
        return KAL_FALSE;
    }
#endif /* defined (__MED_TVO_MOD__) */ 

    if (!med_utility_init())
    {
        return KAL_FALSE;
    }

    return KAL_TRUE;
}


/*****************************************************************************
 * FUNCTION
 *  med_reset
 * DESCRIPTION
 *  This function is used to reset media task.
 * PARAMETERS
 *  task_indx       [IN]        
 * RETURNS
 *  
 *****************************************************************************/
kal_bool med_reset(task_indx_type task_indx)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return KAL_TRUE;
}


/*****************************************************************************
 * FUNCTION
 *  med_create
 * DESCRIPTION
 *  This function is used to create media task configuration info.
 * PARAMETERS
 *  handle      [IN]        
 * RETURNS
 *  
 *****************************************************************************/
kal_bool med_create(comptask_handler_struct **handle)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    static const comptask_handler_struct med_handler_info = 
    {
        med_task_main,  /* task entry function */
        med_init,       /* task initialization function */
        NULL,           /* task configuration function */
        med_reset,      /* task reset handler */
        NULL,           /* task termination handler */
    };

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    *handle = (comptask_handler_struct*) & med_handler_info;

    return KAL_TRUE;
}

#endif /* MED_NOT_PRESENT */ 

⌨️ 快捷键说明

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