📄 jam_create.c
字号:
#ifdef SUPPORT_MMAPI
stack_init_timer(&java_media_timer, "Java Media Timer", MOD_J2ME);
stack_init_timer(&java_stop_time_timer, "Java Stop Time Timer", MOD_J2ME);
#endif /* SUPPORT_MMAPI */
stack_init_timer(&jvm_base_timer, "jvm_basic_timer", MOD_JASYN);
jvm_init_timer();
jvm_event_scheduler_ptr = new_evshed(&jvm_base_timer,
jvm_start_base_timer,
jvm_stop_base_timer,
0,
kal_evshed_get_mem,
kal_evshed_free_mem,
0);
return KAL_TRUE;
}
/*****************************************************************************
* FUNCTION
* jvm_main
* DESCRIPTION
*
* PARAMETERS
* task_entry_ptr [?]
* RETURNS
* void
*****************************************************************************/
static void
jvm_main(task_entry_struct *task_entry_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
ilm_struct current_ilm;
kal_uint32 my_index;
kal_int32 process_res;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
stack_int_set_active_module_id(INDX_J2ME, MOD_J2ME);
kal_get_my_task_index(&my_index);
stack_set_active_module_id(my_index, MOD_J2ME);
stack_init_timer(&j2me_alarm_timer, "J2ME Alarm", MOD_J2ME);
stack_init_timer(&j2me_vibrator_timer, "J2ME Vibrator", MOD_J2ME);
/* open pushlist, alarmlist to create push,alarm list */
/* Remember, the memory should be from system memory pool(control buffer pool) */
j2me_alarm_es_ptr = new_evshed(
&j2me_alarm_timer,
j2me_alarm_start_timer,
j2me_alarm_stop_timer,
0,
kal_evshed_get_mem,
kal_evshed_free_mem,
0);
/* register mmiapi blocking */
mmiapi_register_blocking(MOD_J2ME, "j2me");
mmiapi_register_blocking(MOD_JASYN, "jasyn");
jui_string_init();
#if (defined(__IJET_VM__) || defined(__JBLENDIA__)) &&!defined(APPMEM_SUPPORT)
midpFinalizeMemory();
midpInitializeMemory(javaruntime_space, javaruntime_size);
#endif /* APPMEM_SUPPORT */
#ifdef __SUPPORT_JBT__
/* under construction !*/
#endif
/* do the storage recovery only after MMI has entered idle screen */
while (!jvm_has_entered_idle_screen())
{
kal_sleep_task(20);
}
#ifdef __MMI_MExE_SUPPORT__
get_ca_from_sim();
#endif
jam_call_back_functions.jam_init(GAMETYPE_JAVA_GAME);
#ifdef __SUPPORT_INFUSIO__
jam_call_back_functions.jam_init(GAMETYPE_INFUSIO_EUREKA);
#endif /* __SUPPORT_INFUSIO__ */
#ifdef SUPPORT_SURFKITCHEN
jam_call_back_functions.jam_init(GAMETYPE_SURFKITCHEN);
#endif /* SUPPORT_SURFKITCHEN */
#ifdef SUPPORT_MUSICWAV
jam_call_back_functions.jam_init(GAMETYPE_MUSICWAV);
#endif /* __JBLENDIA__ */
jpush_push_open(GAMETYPE_JAVA_GAME, PUSHPATH_NAME);
#ifdef __SUPPORT_INFUSIO__
jpush_eureka_init();
#endif /* __SUPPORT_INFUSIO__ */
jpush_alarm_open(ALARMPATH_NAME);
J2ME_SET_STATE(getlist);
applib_mem_ap_register(APPLIB_MEM_AP_ID_JAVA, STR_SCR_JAVA_CAPTION, IMG_MENU3108_JAVA, jvm_exit_screen_callback_for_asm);
jpush_init_persistent_push_entries();
is_jvm_in_busy = KAL_FALSE;
#ifdef __SUPPORT_NATIVE_INSTALLER__
is_jvm_task_ready = KAL_TRUE;
#endif /* __SUPPORT_NATIVE_INSTALLER__ */
while (1)
{
#ifdef __IJET_VM__
if ((pending_pushalarm == KAL_TRUE) && (endKeyPressed == KAL_FALSE))
{ /* To avoid launch while end key pressed */
kal_char tmp_midname[256];
kal_uint32 tmp_midsid;
/* If pending pushalarm request in VM update or install */
pending_pushalarm = KAL_FALSE;
/* Update working internal system directory path */
work_sys_dir_path = _jvm_get_dir_path(pending_pushalarm_action.game_type);
work_info_ptr = _jvm_get_builtin_file_info(pending_pushalarm_action.game_type);
strcpy(tmp_midname, pending_pushalarm_action.mid_class_name);
tmp_midsid = jam_call_back_functions.jam_get_mids_id_from_push_name(pending_pushalarm_action.mids_storage_name);
if (pending_pushalarm_action.pushalarm_type == PUSHTYPE_ALARM_PUSH)
{
jpush_alarm_del((alarmentry_struct*) pending_pushalarm_action.callback_entry);
}
/* this function will blocking until real enter screen. */
/* J2ME_timealarm_enter_screen(); */
j2me_mid_start_req_handler(pending_pushalarm_action.session_id,
pending_pushalarm_action.game_type,
pending_pushalarm_action.wap_prof_id,
tmp_midsid,
tmp_midname);
}
#endif /* __IJET_VM__ */
receive_msg_ext_q(task_info_g[task_entry_ptr->task_indx].task_ext_qid, ¤t_ilm);
switch (current_ilm.msg_id)
{
/* Get MIDlet Suite/MIDlet List */
case MSG_ID_MMI_JAVA_MIDS_GETLIST_REQ:
case MSG_ID_MMI_JAVA_MID_GETLIST_REQ:
J2ME_SET_STATE(getlist);
j2me_process_ilm(¤t_ilm);
break;
/* MIDlet Start/Stop */
case MSG_ID_MMI_JAVA_MID_START_REQ:
J2ME_SET_STATE(run);
j2me_process_ilm(¤t_ilm);
break;
/* Remove MIDlet Suite */
case MSG_ID_MMI_JAVA_MIDS_REMOVE_REQ:
J2ME_SET_STATE(remove);
j2me_process_ilm(¤t_ilm);
break;
default:
/* Check VM vendor event handling before general handler */
if (!jvm_vendor_process_event(¤t_ilm) && !j2me_task_general_msg_handler(¤t_ilm))
{
/* Other message handling will be processed in current state's handler */
ASSERT(j2me_current_state);
process_res = j2me_process_ilm(¤t_ilm);
if (process_res < 0)
{
/* Receiving invalid message */
j2me_saved_state = j2me_current_state;
J2ME_SET_STATE(invalid);
process_res = j2me_process_ilm(¤t_ilm);
ASSERT(process_res);
j2me_current_state = j2me_saved_state;
}
}
break;
}
free_ilm(¤t_ilm);
}
}
/*****************************************************************************
* FUNCTION
* jdaemon_create
* DESCRIPTION
* Java asnychronization thread is to receive socket async indication and
* to notifiy blocked JAM thread which should process incoming indication.
* PARAMETERS
* handle [IN]
* RETURNS
* void
*****************************************************************************/
kal_bool jdaemon_create(comptask_handler_struct **handle)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
static const comptask_handler_struct jasyn_handler_info =
{
jdaemon_main, /* task entry function */
NULL, /* task initialization function */
NULL, /* task configuration function */
NULL, /* task reset handler */
NULL, /* task termination handler */
};
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
*handle = (comptask_handler_struct*) & jasyn_handler_info;
return KAL_TRUE;
}
/*****************************************************************************
* FUNCTION
* jdaemon_main
* DESCRIPTION
* JASYN thread entry function
* PARAMETERS
* task_entry_ptr [?]
* RETURNS
* void
*****************************************************************************/
static void jdaemon_main(task_entry_struct *task_entry_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
ilm_struct current_ilm;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
stack_int_set_active_module_id(INDX_JASYN, MOD_JASYN);
/* Reset disk mout information */
disk_changed = KAL_FALSE;
while (1)
{
/* Process queued request */
while (receive_msg_int_q(task_entry_ptr->task_indx, ¤t_ilm))
{
switch (current_ilm.msg_id)
{
default:
break;
}
free_ilm(¤t_ilm);
}
receive_msg_ext_q(task_info_g[task_entry_ptr->task_indx].task_ext_qid, ¤t_ilm);
switch (current_ilm.msg_id)
{
/* UART */
case MSG_ID_UART_READY_TO_READ_IND:
if (jam_comm_registered_read_ind_handler)
{
(*jam_comm_registered_read_ind_handler) (((uart_ready_to_read_ind_struct*)current_ilm.local_para_ptr)->port);
}
break;
case MSG_ID_UART_READY_TO_WRITE_IND:
if (jam_comm_registered_write_ind_handler)
{
(*jam_comm_registered_write_ind_handler) (((uart_ready_to_write_ind_struct*)current_ilm.local_para_ptr)->port);
}
break;
/* Network */
case MSG_ID_APP_SOC_NOTIFY_IND:
case MSG_ID_APP_SOC_GET_HOST_BY_NAME_IND:
case MSG_ID_APP_SOC_GET_HOST_BY_ADDR_IND:
process_soc_async_ind(¤t_ilm);
break;
#ifdef __MMI_MExE_SUPPORT__
case MSG_ID_MMI_SEND_SIM_CERTIFICATE_RECORD_IND:
{
ilm_struct *send_ilm;
mmi_send_sim_certificate_record_ind_struct *sim_cert_ind;
mmi_send_sim_certificate_record_res_struct* get_sim_req;
jam_sim_ca_struct* temp_ca_list;
kal_int32 i, j = 0;
sim_cert_ind = (mmi_send_sim_certificate_record_ind_struct*)current_ilm.local_para_ptr;
temp_ca_list = jam_sim_ca_list;
if(temp_ca_list != NULL)
{
while(temp_ca_list->next_ca != NULL)
{
temp_ca_list = temp_ca_list->next_ca;
}
temp_ca_list->next_ca = (jam_sim_ca_struct*)jam_listmem_malloc(sizeof(jam_sim_ca_struct));
temp_ca_list = temp_ca_list->next_ca;
temp_ca_list->next_ca = NULL;
}
else
{
temp_ca_list = (jam_sim_ca_struct*)jam_listmem_malloc(sizeof(jam_sim_ca_struct));
jam_sim_ca_list = temp_ca_list;
temp_ca_list->next_ca = NULL;
}
temp_ca_list->certificate_domain = sim_cert_ind->idx;
temp_ca_list->certificate_type = sim_cert_ind->certificate_type;
temp_ca_list->certificate_length = sim_cert_ind->data_length;
temp_ca_list->certificate_data = jam_listmem_malloc(sim_cert_ind->data_length);
memcpy(temp_ca_list->certificate_data, sim_cert_ind->data, sim_cert_ind->data_length);
for(i = 0; i < sim_cert_ind->data_length; i++)
{
if(temp_ca_list->certificate_data[i] != 0xd &&
temp_ca_list->certificate_data[i] != 0xa)
{
if(i != j)
{
temp_ca_list->certificate_data[j] = temp_ca_list->certificate_data[i];
}
j++;
}
}
temp_ca_list->certificate_length= j;
get_sim_req = (mmi_send_sim_certificate_record_res_struct*) construct_local_para(sizeof(mmi_send_sim_certificate_record_res_struct), TD_CTRL);
get_sim_req->next = KAL_TRUE;
send_ilm = allocate_ilm(MOD_JASYN);
send_ilm->src_mod_id = MOD_JASYN;
send_ilm->dest_mod_id = MOD_MMI;
send_ilm->local_para_ptr = (local_para_struct*) get_sim_req;;
send_ilm->peer_buff_ptr = NULL;
send_ilm->msg_id = MSG_ID_MMI_SEND_SIM_CERTIFICATE_RECORD_RES;
send_ilm->sap_id = J2ME_WAP_SAP;
msg_send_ext_queue(send_ilm);
}
case MSG_ID_MMI_GET_SIM_CERTIFICATE_RSP:
{
/*mmi_get_sim_certificate_rsp_struct *sim_cert_rsp_struct;
sim_cert_rsp_struct = current_ilm.local_para_ptr;*/
get_sim_ca_completed = KAL_TRUE;
}
break;
#endif
/* HTTP over WSP indication, response */
case MSG_ID_WPS_SET_CHANNEL_RSP:
case MSG_ID_WPS_UNSET_CHANNEL_RSP:
case MSG_ID_WPS_HTTP_RSP:
case MSG_ID_WPS_READ_CONTENT_RSP:
case MSG_ID_WPS_POST_CONTENT_IND:
case MSG_ID_WPS_CANCEL_RSP:
case MSG_ID_WPS_SEC_GET_SESSION_INFO_RSP:
case MSG_ID_WPS_SEC_GET_CURRENT_CERT_RSP:
case MSG_ID_WPS_CLEAR_RSP:
case MSG_ID_WPS_HTTP_AUTH_IND:
case MSG_ID_WPS_RECONFIG_CHANNEL_RSP:
http_wps_response_handler(¤t_ilm);
break;
case MSG_ID_WPS_CREATE_STREAM_CONNECTION_RSP:
case MSG_ID_WPS_STREAM_CONNECTION_CLOSED_IND:
case MSG_ID_WPS_CLOSE_STREAM_CONNECTION_RSP:
case MSG_ID_WPS_STREAM_DATA_SEND_RSP:
case MSG_ID_WPS_STREAM_DATA_READ_RSP:
j2me_stream_response_handler(¤t_ilm);
break;
/* File API storage device indication */
case MSG_ID_FMT_MMI_CARD_PLUG_IN_IND:
case MSG_ID_FMT_MMI_CARD_PLUG_OUT_IND:
jvm_file_device_ind_handler(¤t_ilm);
break;
/* WMAPI */
case MSG_ID_WAP_MMC_SEND_APPMMS_RSP:
case MSG_ID_WAP_MMC_POST_APPMMS_MSG_PART_IND:
case MSG_ID_WAP_MMC_CFG_APPMMS_APPID_RSP:
case MSG_ID_WAP_MMC_CHECK_APPMMS_COMING_RSP:
case MSG_ID_WAP_MMC_RECV_APPMMS_RSP:
case MSG_ID_WAP_MMC_READ_APPMMS_MSG_PART_RSP:
case MSG_ID_WAP_MMC_ABORT_APPMMS_RSP:
J2ME_mms_response_handler(¤t_ilm);
break;
case MSG_ID_MMIAPI_SMS_REGISTER_PORT_RSP:
case MSG_ID_MMIAPI_SMS_SEND_RSP:
case MSG_ID_MMIAPI_SMS_CHECK_INCOMING_MSG_RSP:
case MSG_ID_MMIAPI_SMS_GET_INCOMING_MSG_RSP:
J2ME_sms_response_handler(¤t_ilm);
break;
case MSG_ID_MMIAPI_SMS_IND:
mmiapi_sms_ind_handler(¤t_ilm);
break;
case MSG_ID_MMI_JAVA_GET_IMSI_RES:
jvm_recv_get_imsi_res((void*)current_ilm.local_para_ptr);
break;
case MSG_ID_MMIAPI_DEVICE_GET_CTRL_RSP:
case MSG_ID_MMIAPI_DEVICE_PLAY_RSP:
case MSG_ID_MMIAPI_BACKLIGHT_CONTROL_RSP:
break;
#ifndef __JBLENDIA__
case MSG_ID_TIMER_EXPIRY:
jdaemon_timer_expiry_handler(¤t_ilm);
break;
#endif
default:
if (jdaemon_vendor_process_event(¤t_ilm))
{
break;
}
else if (jui_util_msg_handler(¤t_ilm))
{
break;
}
#if defined(SUPPORT_JSR_75_PIM) || defined(SUPPORT_CMCC)
else if (jpim_phb_handler(¤t_ilm))
{
break;
}
#endif
#if defined(SUPPORT_JSR_75_PIM)
else if (jpim_evtdb_handler(¤t_ilm))
{
break;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -