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

📄 jam_create.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 4 页
字号:

#ifdef __SUPPORT_JBT__
/* under construction !*/
/* under construction !*/
/* under construction !*/
/* under construction !*/
#endif
			break;
		}

		free_ilm(&current_ilm);
	}
}


/*****************************************************************************
 * FUNCTION
 *  j2me_task_general_msg_handler
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  
 *****************************************************************************/
kal_bool j2me_task_general_msg_handler(ilm_struct *ilm_ptr)
{
	/*----------------------------------------------------------------*/
	/* Local Variables                                                */
	/*----------------------------------------------------------------*/

	/*----------------------------------------------------------------*/
	/* Code Body                                                      */
	/*----------------------------------------------------------------*/
	switch (ilm_ptr->msg_id)
	{
		/* Update MIDlet Suite */
	case MSG_ID_MMI_JAVA_MIDS_UPDATE_REQ:
		mids_update_req_handler(ilm_ptr);
		break;
		/* Install MIDlet Suite */
	case MSG_ID_JAVA_WAP_INSTALL_MIDS_IND:
		mids_wap_install_ind_handler(ilm_ptr);
		break;
	case MSG_ID_MMI_JAVA_INSTALL_MIDS_REQ:
		mids_mmi_install_req_handler(ilm_ptr);
		break;

		/* Abort */
	case MSG_ID_MMI_JAVA_ABORT_REQ:
		J2ME_SET_STATE(abort);
		j2me_process_ilm(ilm_ptr);
		break;
#ifdef WAP_SEC_SUPPORT
	case MSG_ID_WPS_SEC_GET_CERT_IDS_RSP:
		{
			wps_sec_get_cert_ids_rsp_struct* sec_cert_rsp = (wps_sec_get_cert_ids_rsp_struct*)ilm_ptr->local_para_ptr;
			cert_total = sec_cert_rsp->total;
			if(cert_total > 0)
			{
				ilm_struct *send_ilm;
				wps_sec_get_cert_req_struct *get_cer_req;
				memcpy(cert_cert_ids, sec_cert_rsp->cert_ids, (cert_total - 1) << 2);
				cert_total --;
				get_cer_req = (wps_sec_get_cert_req_struct*) construct_local_para(sizeof(wps_sec_get_cert_req_struct), TD_CTRL);
				get_cer_req->cert_id = sec_cert_rsp->cert_ids[cert_total];

				send_ilm = allocate_ilm(MOD_J2ME);
				send_ilm->src_mod_id = MOD_J2ME;
				send_ilm->dest_mod_id = MOD_WPS;
				send_ilm->local_para_ptr = (local_para_struct*)get_cer_req;
				send_ilm->peer_buff_ptr = NULL;

				send_ilm->msg_id = MSG_ID_WPS_SEC_GET_CERT_REQ;
				send_ilm->sap_id = J2ME_WAP_SAP;
				msg_send_ext_queue(send_ilm);
			}
		}
		break;

	case MSG_ID_WPS_SEC_GET_CERT_RSP:
		{
			wps_sec_get_cert_rsp_struct *get_cert_rsp = (wps_sec_get_cert_rsp_struct*)ilm_ptr->local_para_ptr;
			if(get_cert_rsp->result  == WPS_SEC_OK && get_cert_rsp->cert.type == WPS_SEC_CERT_FORMAT_X509 && 
				get_cert_rsp->rsa_public_key.rsa_modulus != NULL && get_cert_rsp->rsa_public_key.rsa_exponent != NULL)
			{
				jam_ca_struct* temp_ca = jam_ca_list;
				jam_ca_struct* wap_ca = jvm_malloc(sizeof(jam_ca_struct));
				wap_ca->next_ca = NULL;
				memcpy(&wap_ca->cert_content, &get_cert_rsp->cert, sizeof(wps_sec_cert_content_struct));
				memcpy(&wap_ca->cert_pkey, &get_cert_rsp->rsa_public_key, sizeof(wps_sec_rsa_public_key_struct));
				wap_ca->cert_pkey.rsa_exponent = jvm_malloc(get_cert_rsp->rsa_public_key.exp_len + 1);
				memcpy(wap_ca->cert_pkey.rsa_exponent, get_cert_rsp->rsa_public_key.rsa_exponent, get_cert_rsp->rsa_public_key.exp_len);
				wap_ca->cert_pkey.rsa_modulus= jvm_malloc(get_cert_rsp->rsa_public_key.mod_len + 1);
				memcpy(wap_ca->cert_pkey.rsa_modulus, get_cert_rsp->rsa_public_key.rsa_modulus, get_cert_rsp->rsa_public_key.mod_len);

				free_ctrl_buffer(get_cert_rsp->rsa_public_key.rsa_exponent);
				free_ctrl_buffer(get_cert_rsp->rsa_public_key.rsa_modulus);

			if (temp_ca != NULL)
			{
				while (temp_ca->next_ca != NULL)
				{
					temp_ca = temp_ca->next_ca;
				}
				temp_ca->next_ca = wap_ca;
			} else
			{
				jam_ca_list = wap_ca;
			}
		}
			if(cert_total > 0)
			{
				ilm_struct *send_ilm;
				wps_sec_get_cert_req_struct *get_cer_req;
				cert_total --;
				get_cer_req = (wps_sec_get_cert_req_struct*) construct_local_para(sizeof(wps_sec_get_cert_req_struct), TD_CTRL);
				get_cer_req->cert_id = cert_cert_ids[cert_total];

				send_ilm = allocate_ilm(MOD_J2ME);
				send_ilm->src_mod_id = MOD_J2ME;
				send_ilm->dest_mod_id = MOD_WPS;
				send_ilm->local_para_ptr = (local_para_struct*)get_cer_req;
				send_ilm->peer_buff_ptr = NULL;

				send_ilm->msg_id = MSG_ID_WPS_SEC_GET_CERT_REQ;
				send_ilm->sap_id = J2ME_WAP_SAP;
				msg_send_ext_queue(send_ilm);
			}
			else
			{
				get_ca_completed = KAL_TRUE;
			}
		}
		break;
#endif /* WAP_SEC_SUPPORT */
	case MSG_ID_JAVA_KEYPAD_NOTIFY_IND:
	case MSG_ID_APP_SOC_DEACTIVATE_CNF:
		break;

		/* Get MIDlet Suite information */
	case MSG_ID_MMI_JAVA_MIDS_GETINFO_REQ:
		mids_getinfo_req_handler(ilm_ptr);
		break;

		/* Get/Set MIDlet Suite settings */
	case MSG_ID_MMI_JAVA_MIDS_GET_SETTING_REQ:
		mids_get_setting_req_handler(ilm_ptr);
		break;

	case MSG_ID_MMI_JAVA_MIDS_SET_SETTING_REQ:
		mids_set_setting_req_handler(ilm_ptr);
		break;

#ifndef APPMEM_SUPPORT

		/* 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(ilm_ptr);
		break;
#endif /* APPMEM_SUPPORT */ 

		/* Push Alarm permission */
	case MSG_ID_MMI_JAVA_TIMEALARM_PUSH_RES:
		java_mmi_timealarm_push_res_handler(ilm_ptr);
		break;

#ifdef __SUPPORT_INFUSIO__
	case MSG_ID_JAVA_JAVA_ENQUEUE_SMS_REQ:
		java_java_eureka_enqueue_sms_req_handler(ilm_ptr);
		break;
#endif /* __SUPPORT_INFUSIO__ */

		/* WMA Push */
	case MSG_ID_WAP_MMC_APPMMS_NEW_MMS_IND:
		j2me_mms_ind_handler(ilm_ptr);
		break;

#ifdef OGDR_SECURITY_SETTING
            /* Security setting for OGDR 5.0 */
        case MSG_ID_MMI_JAVA_GET_DOMAIN_LIST_REQ:
            jam_get_domain_list_req(ilm_ptr);
            break;

        case MSG_ID_MMI_JAVA_GET_DEFAULT_DOMAIN_REQ:
            jam_get_default_setting_req(ilm_ptr);
            break;

        case MSG_ID_MMI_JAVA_SET_DEFAULT_DOMAIN_REQ:
            jam_set_default_setting_req(ilm_ptr);
            break;

        case MSG_ID_MMI_JAVA_RESET_DEFAULT_DOMAIN_REQ:
            jam_reset_default_setting_req(ilm_ptr);
            break;
#endif   

		/* Update WAP connection data account indication handler */
	case MSG_ID_JAVA_WAP_DATA_ACCOUNT_IND:
		{
			java_wap_data_account_ind_struct *p = (java_wap_data_account_ind_struct*) ilm_ptr->local_para_ptr;

			J2ME_active_nw_acc_id = p->data_account;
		}
		break;		

		/* TCK verification request handler */
	case MSG_ID_MMI_JAVA_SET_MODE_REQ:
		jvm_tckmode_req_handler(ilm_ptr);
		break;

		/* General timer expiry handlers */
	case MSG_ID_TIMER_EXPIRY:
		j2me_timer_expiry_handler(ilm_ptr);
		break;
        
    /* MMAPI general event callback handlers */
	case MSG_ID_JAVA_MMA_EVENT_CALLBACK:
        {
            mma_event_callback_struct *p = (mma_event_callback_struct*) ilm_ptr->local_para_ptr;

            /* check dependency mutex first */
            do
            {
                if (jma_media_player_dependency_mutex_lock_no_wait())
                {
                    break;
                }
            }while(1);
            
            if(jma_media_player_cs_check_and_enter(KAL_TRUE))
            {
                jma_audio_event_callback_handler(p->handle, p->event, p->aud_id, p->seq_id);
                jma_media_player_cs_leave();
            } 

            /* Remember to unlock the additional lock. */
            jma_media_player_dependency_mutex_unlock();
	    }
		break;
        
	default:
    #ifdef SUPPORT_MMAPI
        /* Make sure MMAPI parameters has already been inited */
        if(jvm_get_state() != JVM_TERMINATE_STATE)
        {            
            /* check dependency mutex first */
            do
            {
                if (jma_media_player_dependency_mutex_lock_no_wait())
                {
                    break;
                }
            }while(1);
            
            if(jma_media_player_cs_check_and_enter(KAL_FALSE))
            {
                /* dispatch message to mdi library */
                if(mdi_message_dispatcher(ilm_ptr))
                {
                    jma_media_player_cs_leave();

                    /* Remember to unlock the additional lock. */
                    jma_media_player_dependency_mutex_unlock();
                    return KAL_TRUE;
                }
                jma_media_player_cs_leave();
            }
            /* Remember to unlock the additional lock. */
            jma_media_player_dependency_mutex_unlock();
        }

    #endif /* SUPPORT_MMAPI */    

	#ifdef __DRM_SUPPORT__
        if( DRM_app_common_hdlr(ilm_ptr))
        {
            return KAL_TRUE;
        }
	#endif        

		return KAL_FALSE;	/* this message no one handle it :Q */
	}
	return KAL_TRUE;
}


/*****************************************************************************
 * FUNCTION
 *  jdaemon_timer_expiry_handler
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
static void jdaemon_timer_expiry_handler(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
	/* Local Variables                                                */
	/*----------------------------------------------------------------*/
	stack_timer_struct *timer = (stack_timer_struct*) (ilm_ptr->local_para_ptr);

	/*----------------------------------------------------------------*/
	/* Code Body                                                      */
	/*----------------------------------------------------------------*/
    if (timer == &jvm_base_timer)
    {
        /* Check if the base timer is stopped or not */
        if (stack_is_time_out_valid(&jvm_base_timer))
        {
            /* Execute event's timeout handler */
            evshed_timer_handler(jvm_event_scheduler_ptr);
        }
        /* Should be paired with stack_is_time_out_valid() */
        stack_process_time_out(&jvm_base_timer);
    }
}


/*****************************************************************************
 * FUNCTION
 *  j2me_timer_expiry_handler
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
static void j2me_timer_expiry_handler(ilm_struct *ilm_ptr)
{
	/*----------------------------------------------------------------*/
	/* Local Variables                                                */
	/*----------------------------------------------------------------*/
	stack_timer_struct *timer = (stack_timer_struct*) (ilm_ptr->local_para_ptr);

	/*----------------------------------------------------------------*/
	/* Code Body                                                      */
	/*----------------------------------------------------------------*/
	if (timer == &j2me_vibrator_timer)
	{
		if (stack_is_time_out_valid(&j2me_vibrator_timer))
		{
			jvm_stopVibrate_call_by_Jdaemon();
		}
		/* Should be paired with stack_is_time_out_valid() */
		stack_process_time_out(&j2me_vibrator_timer);
	} 
    else if (timer == &j2me_alarm_timer)
	{
		/* timealarm */
		/* mmi pop up window to ask use can we exit current midlet, and start alarm midlet */
		/* Check if the base timer is stopped or not */
		if (stack_is_time_out_valid(&j2me_alarm_timer))
		{
			/* Execute event's timeout handler */
			evshed_timer_handler(j2me_alarm_es_ptr);
		}
		/* Should be paired with stack_is_time_out_valid() */
		stack_process_time_out(&j2me_alarm_timer);
	}
#ifdef SUPPORT_MMAPI
    else if (timer == &java_media_timer)
    { 
        if (stack_is_time_out_valid(&java_media_timer))
		{
            /* check dependency mutex first */
            do
            {
                if (jma_media_player_dependency_mutex_lock_no_wait())
                {
                    break;
                }
            }while(1);
            
            kal_trace(TRACE_GROUP_4, FUNC_J2ME_TIMER_EXPIRY_HANDLER, timer->timer_indx);
            if (timer->timer_indx == JAVA_MEDIA_TIMER_AUDIO_RECORDER)
            {
                jma_audio_recorder_timer_expired();
            }
            else if (timer->timer_indx == JAVA_MEDIA_TIMER_ANIMA_PLAYER)
            {
                jma_anima_player_draw_frame_cyclic();
            }
            else if (timer->timer_indx == JAVA_MEDIA_TIMER_ANIMA_PARSE_INFO)
            {
                jma_anima_player_parse_info_cyclic();
            }
        #if !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_RECORDER__) 
            else if (timer->timer_indx == JAVA_MEDIA_TIMER_VIDEO_RECORDER)
            {
                jma_video_recorder_timer_expired();
            }
        #endif /* !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_RECORDER__) */
        #if !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_PLAYER__)
        #ifdef __MMI_VIDEO_STREAM__     
            else if (timer->timer_indx == JAVA_MEDIA_TIMER_STREAM_PLAYER)
            {
                jma_stream_player_buffering_cyclic();
            }
        #endif /* __MMI_VIDEO_STREAM__ */        
        #ifdef __MMI_VIDEO_PDL__  
            else if (timer->timer_indx == JAVA_MEDIA_TIMER_PDL_PLAYER)
            {
                jma_video_player_cache_buffering_cyclic();
            }
        #endif /* __MMI_VIDEO_PDL__ */            
        #endif /* !defined (J2ME_SHARE_MED_EXT_MEM) && defined(__MMI_VIDEO_PLAYER__) */   

            /* Remember to unlock the additional lock. */
            jma_media_player_dependency_mutex_unlock();
        }
        
        /* MUST be invoked even if JMA wants to ignore the time out message */
		stack_process_time_out(&java_media_timer);
    }
    else if (timer == &java_stop_time_timer)
    {
        if (stack_is_time_out_valid(&java_stop_time_timer))
        {
            /* check dependency mutex first */
            do
            {
                if (jma_media_player_dependency_mutex_lock_no_wait())
                {
                    break;
                }
            }while(1);

            jma_anima_player_check_stop_time_cyclic();

            /* Remember to unlock the additional lock. */
            jma_media_player_dependency_mutex_unlock();
        }
        
        /* MUST be invoked even if JMA wants to ignore the time out message */
    	stack_process_time_out(&java_stop_time_timer);
    }   
#endif
}

⌨️ 快捷键说明

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