📄 jwa_mms.c
字号:
* FUNCTION
* J2ME_mms_reset_recv_data
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void J2ME_mms_reset_recv_data()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (j2me_mms_recv_data.start_cnt_id != NULL)
{
jvm_free(j2me_mms_recv_data.start_cnt_id);
j2me_mms_recv_data.start_cnt_id = NULL;
}
if (j2me_mms_recv_data.reply_app_id != NULL)
{
jvm_free(j2me_mms_recv_data.reply_app_id);
j2me_mms_recv_data.reply_app_id = NULL;
}
if (j2me_mms_recv_data.peer_buffer != NULL)
{
jvm_free(j2me_mms_recv_data.peer_buffer);
j2me_mms_recv_data.peer_buffer = NULL;
}
}
/*****************************************************************************
* FUNCTION
* J2ME_mms_reset_recv_part_data
* DESCRIPTION
*
* PARAMETERS
* filepath [IN]
* RETURNS
* void
*****************************************************************************/
void J2ME_mms_reset_recv_part_data(kal_bool filepath)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (j2me_mms_recv_part_data.content_type != NULL)
{
jvm_free(j2me_mms_recv_part_data.content_type);
j2me_mms_recv_part_data.content_type = NULL;
}
if (j2me_mms_recv_part_data.content_id != NULL)
{
jvm_free(j2me_mms_recv_part_data.content_id);
j2me_mms_recv_part_data.content_id = NULL;
}
if (j2me_mms_recv_part_data.content_location != NULL)
{
jvm_free(j2me_mms_recv_part_data.content_location);
j2me_mms_recv_part_data.content_location = NULL;
}
if (filepath && j2me_mms_recv_part_data.filepath != NULL)
{
jvm_free(j2me_mms_recv_part_data.filepath);
j2me_mms_recv_part_data.filepath = NULL;
}
}
/*****************************************************************************
* FUNCTION
* J2ME_mms_get_message_sent_time
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
kal_uint64 J2ME_mms_get_message_sent_time()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
return (kal_uint64) j2me_mms_recv_data.date;
}
/*****************************************************************************
* FUNCTION
* J2ME_mms_save_result
* DESCRIPTION
*
* PARAMETERS
* result [IN]
* RETURNS
* void
*****************************************************************************/
void J2ME_mms_save_result(MmcResult result)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (result == MMC_RESULT_OK)
{
j2me_mms_result = 0;
}
else
{
j2me_mms_result = -1;
}
}
/*****************************************************************************
* FUNCTION
* readMmsAsyncEvent
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
unsigned long readMmsAsyncEvent()
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint32 event_group, ret_msgid;
kal_status result;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
flag_wait_async_mms_msgid = KAL_TRUE;
result = kal_retrieve_eg_events(J2ME_async_mms_eventgroup, 1, KAL_OR_CONSUME, &event_group, KAL_NO_SUSPEND);
if (result == KAL_NOT_PRESENT)
{
return (-2); /* IO_WOULDBLOCK */
}
else
{
ret_msgid = J2ME_async_mms_msgid;
J2ME_async_mms_msgid = 0;
flag_wait_async_mms_msgid = KAL_FALSE;
/* 2nd bit notify complete retreive async event */
kal_set_eg_events(J2ME_async_mms_eventgroup, 0x2, KAL_OR);
return ret_msgid;
}
}
/*****************************************************************************
* FUNCTION
* J2ME_mms_response_handler
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void J2ME_mms_response_handler(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (J2ME_async_mms_msgid && flag_wait_async_mms_msgid)
{
/* Pedning async event */
kal_uint32 event_group, polling = 0;
kal_status result;
while (1)
{
/* 2nd bit indicate wait pending async event consumed */
result = kal_retrieve_eg_events(J2ME_async_mms_eventgroup, 0x2, KAL_OR_CONSUME, &event_group, KAL_NO_SUSPEND);
if (result != KAL_NOT_PRESENT || polling++ >= 100)
{
break;
}
/* To avoid deadlock and complicated timer control, use polling */
kal_sleep_task(1);
}
}
J2ME_async_mms_msgid = ilm_ptr->msg_id;
switch (ilm_ptr->msg_id)
{
case MSG_ID_WAP_MMC_SEND_APPMMS_RSP:
{
wap_mmc_send_appmms_rsp_struct *p = (wap_mmc_send_appmms_rsp_struct*) ilm_ptr->local_para_ptr;
J2ME_mms_save_result(p->result);
if (j2me_mms_in_progress)
{
jui_widget_hide_connect_icon();
}
j2me_mms_in_progress = KAL_FALSE;
}
break;
case MSG_ID_WAP_MMC_POST_APPMMS_MSG_PART_IND:
{
wap_mmc_post_appmms_msg_part_ind_struct *p =
(wap_mmc_post_appmms_msg_part_ind_struct*) ilm_ptr->local_para_ptr;
J2ME_mms_save_result(p->result);
}
break;
case MSG_ID_WAP_MMC_CFG_APPMMS_APPID_RSP:
{
wap_mmc_cfg_appmms_appid_rsp_struct *p = (wap_mmc_cfg_appmms_appid_rsp_struct*) ilm_ptr->local_para_ptr;
J2ME_mms_save_result(p->result);
if (p->result == MMC_RESULT_OK && j2me_mms_temp_appid.app_id_len != 0)
{
if (j2me_mms_register_type == WMA_REGISTRY)
{
if (j2me_mms_registering)
{
J2ME_mms_add_appid();
}
else
{
J2ME_mms_delete_appid();
}
}
}
j2me_mms_registering = KAL_FALSE;
J2ME_mms_reset_temp_appid();
if (j2me_mms_register_type == PUSH_REGISTRY)
{
J2ME_async_mms_msgid = 0;
}
}
break;
case MSG_ID_WAP_MMC_CHECK_APPMMS_COMING_RSP:
{
wap_mmc_check_appmms_coming_rsp_struct *p =
(wap_mmc_check_appmms_coming_rsp_struct*) ilm_ptr->local_para_ptr;
if (p->result)
{
j2me_mms_result = 1;
}
else
{
j2me_mms_result = 0;
}
}
break;
case MSG_ID_WAP_MMC_RECV_APPMMS_RSP:
{
kal_uint16 len;
wap_mmc_recv_appmms_rsp_struct *p = (wap_mmc_recv_appmms_rsp_struct*) ilm_ptr->local_para_ptr;
kal_uint8 *pdu_ptr = NULL;
J2ME_mms_reset_recv_data();
J2ME_mms_save_result(p->result);
if (p->result == MMC_RESULT_OK)
{
pdu_ptr = get_pdu_ptr(ilm_ptr->peer_buff_ptr, &len);
/* j2me_mms_recv_data.transId = p->transId; */
j2me_mms_recv_data.priority = p->priority;
j2me_mms_recv_data.from_addr_no = p->from_addr_no;
j2me_mms_recv_data.to_addr_no = p->to_addr_no;
j2me_mms_recv_data.cc_addr_no = p->cc_addr_no;
j2me_mms_recv_data.bdy_part_no = p->bdy_part_no;
j2me_mms_recv_data.date = (jlong) p->date;
j2me_mms_recv_data.start_cnt_id_len = p->start_cnt_id_len;
j2me_mms_recv_data.reply_app_id_len = p->reply_app_id_len;
j2me_mms_recv_data.peer_buffer_len = len;
if (p->bdy_part_no == 0)
{
j2me_mms_in_progress = KAL_FALSE;
}
if (j2me_mms_recv_data.start_cnt_id_len > 0)
{
j2me_mms_recv_data.start_cnt_id = (kal_uint8*) jvm_malloc(p->start_cnt_id_len);
if (j2me_mms_recv_data.start_cnt_id == NULL)
{
J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
break;
}
memcpy(j2me_mms_recv_data.start_cnt_id, p->start_cnt_id, p->start_cnt_id_len);
}
if (j2me_mms_recv_data.reply_app_id_len > 0)
{
j2me_mms_recv_data.reply_app_id = (kal_uint8*) jvm_malloc(p->reply_app_id_len);
if (j2me_mms_recv_data.reply_app_id == NULL)
{
J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
break;
}
memcpy(j2me_mms_recv_data.reply_app_id, p->reply_app_id, p->reply_app_id_len);
}
if (pdu_ptr != NULL && len > 0)
{
j2me_mms_recv_data.peer_buffer = (kal_uint8*) jvm_malloc(len);
if (j2me_mms_recv_data.peer_buffer == NULL)
{
J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
break;
}
memcpy(j2me_mms_recv_data.peer_buffer, pdu_ptr, len);
}
}
else
{
j2me_mms_in_progress = KAL_FALSE;
}
}
break;
case MSG_ID_WAP_MMC_READ_APPMMS_MSG_PART_RSP:
{
wap_mmc_read_appmms_msg_part_rsp_struct *p =
(wap_mmc_read_appmms_msg_part_rsp_struct*) ilm_ptr->local_para_ptr;
J2ME_mms_reset_recv_part_data(KAL_TRUE);
J2ME_mms_save_result(p->result);
if (p->result == MMC_RESULT_OK)
{
j2me_mms_recv_part_data.encoding_scheme = p->encoding_scheme;
j2me_mms_recv_part_data.content_type_len = p->content_type_len;
j2me_mms_recv_part_data.content_id_len = p->content_id_len;
j2me_mms_recv_part_data.content_location_len = p->content_location_len;
j2me_mms_recv_part_data.filepath_len = p->filepath_len;
if (j2me_mms_recv_part_data.content_type_len > 0)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -