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

📄 jam_create.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 4 页
字号:
#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, &current_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(&current_ilm);
			break;

			/* MIDlet Start/Stop */
		case MSG_ID_MMI_JAVA_MID_START_REQ:
			J2ME_SET_STATE(run);
			j2me_process_ilm(&current_ilm);
			break;

			/* Remove MIDlet Suite */
		case MSG_ID_MMI_JAVA_MIDS_REMOVE_REQ:
			J2ME_SET_STATE(remove);
			j2me_process_ilm(&current_ilm);
			break;

		default:
			/* Check VM vendor event handling before general handler */
			if (!jvm_vendor_process_event(&current_ilm) && !j2me_task_general_msg_handler(&current_ilm))
			{
				/* Other message handling will be processed in current state's handler */
				ASSERT(j2me_current_state);

				process_res = j2me_process_ilm(&current_ilm);

				if (process_res < 0)
				{
					/* Receiving invalid message */
					j2me_saved_state = j2me_current_state;
					J2ME_SET_STATE(invalid);

					process_res = j2me_process_ilm(&current_ilm);
					ASSERT(process_res);

					j2me_current_state = j2me_saved_state;
				}
			}
			break;
		}

		free_ilm(&current_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, &current_ilm))
		{
			switch (current_ilm.msg_id)
			{
			default:
				break;
			}
			free_ilm(&current_ilm);
		}

		receive_msg_ext_q(task_info_g[task_entry_ptr->task_indx].task_ext_qid, &current_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(&current_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(&current_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(&current_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(&current_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(&current_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(&current_ilm);
			break;

		case MSG_ID_MMIAPI_SMS_IND:
			mmiapi_sms_ind_handler(&current_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(&current_ilm);
		    break;
#endif
		default:
			if (jdaemon_vendor_process_event(&current_ilm))
			{
				break;
			} 
            else if (jui_util_msg_handler(&current_ilm))
			{
				break;
			}
#if defined(SUPPORT_JSR_75_PIM) || defined(SUPPORT_CMCC)
			else if (jpim_phb_handler(&current_ilm))
			{
				break;
			}
#endif
#if defined(SUPPORT_JSR_75_PIM)
			else if (jpim_evtdb_handler(&current_ilm))
			{
				break;
			}
#endif

⌨️ 快捷键说明

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