srv_ies_result srv_ies_job_init(srv_ies_app_session_handle hApp) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ kal_uint32 taskID; kal_int32 index; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ if (0 == g_srv_ies_hdl_mutex) { g_srv_ies_hdl_mutex = kal_create_mutex("IESHDLMX"); ASSERT(0 != g_srv_ies_hdl_mutex); } kal_take_mutex(g_srv_ies_hdl_mutex); if (0 == g_srv_ies_job_user) { kal_get_my_task_index(&taskID); if(INDX_MMI == taskID) { mmi_frm_set_protocol_event_handler(MSG_ID_IES_JOB_RSP, &_srv_ies_job_response_handler, MMI_FALSE); } memset(g_srv_ies_curr_job, 0x0, sizeof(srv_ies_job*) * SRV_IES_JOB_MAX_JOB_COUNT); for (index = 0; index < SRV_IES_JOB_MAX_JOB_COUNT; index++) { g_srv_ies_job_pool[index].jobID = index; } } hApp->appState |= SRV_IES_APP_STATE_JOB_INITED; g_srv_ies_job_user++; kal_give_mutex(g_srv_ies_hdl_mutex); g_srv_ies_job_deinit = KAL_FALSE; return SRV_IES_OK; }
static void vuart_task_main(task_entry_struct *task_entry_ptr) { ilm_struct current_ilm; kal_uint32 my_index; kal_get_my_task_index(&my_index); stack_set_active_module_id (my_index, MOD_VUART); while (1) { receive_msg_ext_q( task_info_g[task_entry_ptr->task_indx].task_ext_qid, ¤t_ilm); vuart_main(¤t_ilm); free_ilm(¤t_ilm); } }
/***************************************************************************** * FUNCTION * CalHighTaskMain * DESCRIPTION * This function is main function of CAL HIGH task. * PARAMETERS * task_entry_ptr [?] * RETURNS * void *****************************************************************************/ void CalHighTaskMain(task_entry_struct *pTaskEntry) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ ilm_struct CurrentIlm; kal_uint32 CalHighTaskIndex; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ kal_get_my_task_index(&CalHighTaskIndex); while (1) { receive_msg_ext_q_for_stack(task_info_g[CalHighTaskIndex].task_ext_qid, &CurrentIlm); stack_set_active_module_id(CalHighTaskIndex, CurrentIlm.dest_mod_id); CalHighMsgHandle(&CurrentIlm); free_ilm(&CurrentIlm); } } /* CalHighTaskMain() */
/***************************************************************************** * FUNCTION * vcodec_v2_task_main * DESCRIPTION * Vcodec task main * PARAMETERS * task_entry_ptr [IN] task struct pointer * RETURNS * void *****************************************************************************/ static void vcodec_v2_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_for_stack(task_info_g[task_entry_ptr->task_indx].task_ext_qid, ¤t_ilm); stack_set_active_module_id(my_index, current_ilm.dest_mod_id); vcodec_v2_main((void*)¤t_ilm); free_ilm(¤t_ilm); } }
srv_ies_result srv_ies_job_deinit(srv_ies_app_session_handle hApp) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ srv_ies_job *pJob; kal_int32 index; SRV_IES_JOB_STATE_ENUM state; kal_uint32 taskID; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ hApp->appState &= ~SRV_IES_APP_STATE_JOB_INITED; for (index = 0; index < SRV_IES_JOB_MAX_JOB_COUNT; index++) { kal_take_mutex(g_srv_ies_hdl_mutex); pJob = g_srv_ies_curr_job[index]; kal_give_mutex(g_srv_ies_hdl_mutex); if (pJob) { kal_take_mutex(g_srv_ies_job_mutex); state = pJob->state; kal_give_mutex(g_srv_ies_job_mutex); if ((pJob->pParent == hApp) && (SRV_IES_JOB_STATE_INVALID != state) && (SRV_IES_JOB_STATE_FINISHED != state)) { srv_ies_job_cancel(pJob); } else if ((pJob->pParent == hApp) && (SRV_IES_JOB_STATE_FINISHED == state)) { g_srv_ies_curr_job[index] = NULL; pJob->seqNum = 0; TYPED_FREE(pJob, srv_ies_job); } pJob->state = SRV_IES_JOB_STATE_INVALID; } } kal_take_mutex(g_srv_ies_hdl_mutex); g_srv_ies_job_user--; ASSERT(g_srv_ies_job_user >= 0); if (0 == g_srv_ies_job_user) { kal_get_my_task_index(&taskID); if(INDX_MMI == taskID) { mmi_frm_clear_protocol_event_handler(MSG_ID_IES_JOB_RSP, &_srv_ies_job_response_handler); } g_srv_ies_job_deinit = KAL_TRUE; } kal_give_mutex(g_srv_ies_hdl_mutex); return SRV_IES_OK; }