📄 jwa_mms.c
字号:
j2me_mms_recv_part_data.content_type = (kal_uint8*) jvm_malloc(p->content_type_len);
if (j2me_mms_recv_part_data.content_type == NULL)
{
J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
break;
}
memcpy(j2me_mms_recv_part_data.content_type, p->content_type, p->content_type_len);
}
if (j2me_mms_recv_part_data.content_id_len > 0)
{
j2me_mms_recv_part_data.content_id = (kal_uint8*) jvm_malloc(p->content_id_len);
if (j2me_mms_recv_part_data.content_id == NULL)
{
J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
break;
}
memcpy(j2me_mms_recv_part_data.content_id, p->content_id, p->content_id_len);
}
if (j2me_mms_recv_part_data.content_location_len > 0)
{
j2me_mms_recv_part_data.content_location = (kal_uint8*) jvm_malloc(p->content_location_len);
if (j2me_mms_recv_part_data.content_location == NULL)
{
J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
break;
}
memcpy(j2me_mms_recv_part_data.content_location, p->content_location, p->content_location_len);
}
if (j2me_mms_recv_part_data.filepath_len > 0)
{
j2me_mms_recv_part_data.filepath = (kal_wchar*) jvm_malloc((p->filepath_len + 1) * 2);
if (j2me_mms_recv_part_data.filepath == NULL)
{
J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
break;
}
kal_wstrncpy(j2me_mms_recv_part_data.filepath, p->filepath, p->filepath_len);
/* Reset file size */
j2me_mms_recv_part_data.file_size = 0;
}
}
else
{
j2me_mms_in_progress = KAL_FALSE;
}
}
break;
case MSG_ID_WAP_MMC_ABORT_APPMMS_RSP:
{
j2me_mms_in_progress = KAL_FALSE;
}
break;
default:
break;
}
/* notify J2ME thread to process coming async event */
kal_set_eg_events(J2ME_async_mms_eventgroup, 1, KAL_OR);
return;
}
/*****************************************************************************
* FUNCTION
* j2me_process_recvd_mms_ind
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void *j2me_process_recvd_mms_ind(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
wap_mmc_appmms_new_mms_ind_struct *mms_ind_ptr = (wap_mmc_appmms_new_mms_ind_struct*) ilm_ptr->local_para_ptr;
pushentry_struct *p = NULL;
kal_uint8 *appid = jvm_malloc(mms_ind_ptr->app_id_len + 1);
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (appid != NULL)
{
memcpy(appid, mms_ind_ptr->app_id, mms_ind_ptr->app_id_len);
appid[mms_ind_ptr->app_id_len] = 0;
p = push_process_recvd_mms_ind((char*)appid);
jvm_free(appid);
}
return p;
}
/*****************************************************************************
* FUNCTION
* J2ME_mms_register
* DESCRIPTION
*
* PARAMETERS
* application_id [?]
* op [IN] 0 for register, 1 for unregister
* type [IN]
* RETURNS
* void
*****************************************************************************/
void J2ME_mms_register(char *application_id, int op, int type)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
wap_mmc_cfg_appmms_appid_req_struct *p;
char *appid = application_id;
int appIdLen;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
p = (wap_mmc_cfg_appmms_appid_req_struct*) construct_local_para(
sizeof(wap_mmc_cfg_appmms_appid_req_struct),
TD_CTRL);
appIdLen = strlen(appid);
p->op = op;
p->app_id_len = appIdLen;
memcpy((S8*) p->app_id, appid, appIdLen);
p->app_id[appIdLen] = '\0';
p->ind_module = MOD_J2ME;
if (op == 0)
{
j2me_mms_registering = KAL_TRUE;
}
if (type == WMA_REGISTRY)
{
J2ME_mms_reset_temp_appid();
j2me_mms_temp_appid.app_id_len = p->app_id_len;
j2me_mms_temp_appid.app_id = (kal_uint8*) jvm_malloc(p->app_id_len + 1);
if (j2me_mms_temp_appid.app_id != NULL)
{
memcpy(j2me_mms_temp_appid.app_id, p->app_id, p->app_id_len);
j2me_mms_temp_appid.app_id[p->app_id_len] = '\0';
}
}
j2me_mms_register_type = type;
J2ME_mms_send_ilm(p, NULL, MSG_ID_WAP_MMC_CFG_APPMMS_APPID_REQ, wap_get_service_module(MSG_ID_WAP_MMC_CFG_APPMMS_APPID_REQ));
return;
}
/*****************************************************************************
* FUNCTION
* jwa_mms_register
* DESCRIPTION
*
* PARAMETERS
* app_id_len [IN]
* app_id [?]
* operation [IN]
* type [IN]
* RETURNS
*
*****************************************************************************/
kal_bool jwa_mms_register(int app_id_len, char *app_id, int operation, int type)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
int appIdLen = app_id_len;
char *applicationId = app_id;
int op = operation;
int register_type = type;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef __MMI_DUAL_SIM_MASTER__
if ((!mmi_bootup_is_sim_valid()) && (!mmi_bootup_is_sim2_valid()))
#else
if (!mmi_bootup_is_sim_valid())
#endif /* __MMI_DUAL_SIM_MASTER__ */
{
return J2ME_MMS_INVALID_SIM;
}
#ifdef J2ME_SUPPORT_BACKGROUND
/* MMS service is not available during bg running state */
if (jvm_get_state() == JVM_BG_RUNNING_STATE)
{
sprintf(_kvmLogStr,"jwa_mms_register: BG running state \n");
Kprintf();
return J2ME_MMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
if (appIdLen > 0)
{
char *appId = NULL;
appId = (char*)jvm_malloc(appIdLen + 1);
memset((S8*) appId, 0, (appIdLen + 1));
memcpy(appId, applicationId, appIdLen);
J2ME_mms_register(appId, op, register_type);
jvm_free(appId);
return J2ME_MMS_OK;
}
else
{
return J2ME_MMS_INVALID_PARAMETER;
}
}
/*****************************************************************************
* FUNCTION
* jwa_mms_send_message
* DESCRIPTION
*
* PARAMETERS
* send_data [?]
* msg_info_len [IN]
* msg_info [?]
* RETURNS
*
*****************************************************************************/
int jwa_mms_send_message(jwa_mms_send_req_struct *send_data, kal_uint32 msg_info_len, kal_uint8 *msg_info)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
jwa_mms_send_req_struct *send_req_data = send_data;
kal_uint32 peerBufLen = msg_info_len;
kal_uint8 *msg_info_data = msg_info;
wap_mmc_send_appmms_req_struct *p;
peer_buff_struct *peer_buff_ptr;
kal_uint16 dummyLen = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
#ifdef __MMI_DUAL_SIM_MASTER__
if (((!mmi_bootup_is_sim_valid()) && (jam_get_sim_id() == WAP_SIM_ID_SIM1)) ||
((!mmi_bootup_is_sim2_valid()) && (jam_get_sim_id() == WAP_SIM_ID_SIM2)))
#else
if (!mmi_bootup_is_sim_valid())
#endif /* __MMI_DUAL_SIM_MASTER__ */
{
return J2ME_MMS_INVALID_SIM;
}
#ifdef J2ME_SUPPORT_BACKGROUND
/* MMS service is not available during bg running state */
if (jvm_get_state() == JVM_BG_RUNNING_STATE)
{
sprintf(_kvmLogStr,"jwa_mms_send_message: BG running state \n");
Kprintf();
return J2ME_MMS_NOT_AVAILABLE;
}
#endif /* J2ME_SUPPORT_BACKGROUND */
p = (wap_mmc_send_appmms_req_struct*) construct_local_para(sizeof(wap_mmc_send_appmms_req_struct), TD_CTRL);
p->priority = (kal_uint8) send_req_data->priority;
p->to_addr_no = (kal_uint8) send_req_data->to_addr_no;
p->cc_addr_no = (kal_uint8) send_req_data->cc_addr_no;
p->bcc_addr_no = (kal_uint8) send_req_data->bcc_addr_no;
p->bdy_part_no = (kal_uint8) send_req_data->bdy_part_no;
p->app_id_len = (kal_uint8) send_req_data->app_id_len;
p->reply_app_id_len = (kal_uint8) send_req_data->reply_app_id_len;
p->start_cnt_id_len = (kal_uint8) send_req_data->start_cnt_id_len;
#ifdef __MMI_DUAL_SIM_MASTER__
if (jam_get_sim_id() == WAP_SIM_ID_SIM2)
{
p->simId = MMC_SIM_CARD_SLAVE;
}
else
{
p->simId = MMC_SIM_CARD_MASTER;
}
#endif /* __MMI_DUAL_SIM_MASTER__ */
if (p->app_id_len > J2ME_MMS_LOCAL_PARAMETER_ARRAY_LEN)
{
free_local_para((local_para_struct*) p);
return J2ME_MMS_INVALID_PARAMETER;
}
if (p->reply_app_id_len > J2ME_MMS_LOCAL_PARAMETER_ARRAY_LEN)
{
free_local_para((local_para_struct*) p);
return J2ME_MMS_INVALID_PARAMETER;
}
if (p->start_cnt_id_len > J2ME_MMS_LOCAL_PARAMETER_ARRAY_LEN)
{
free_local_para((local_para_struct*) p);
return J2ME_MMS_INVALID_PARAMETER;
}
if (peerBufLen > J2ME_MMS_PEER_BUFFER_LEN)
{
free_local_para((local_para_struct*) p);
return J2ME_MMS_INVALID_PARAMETER;
}
p->delivery_time = (kal_uint32) (send_req_data->delivery_time / 1000);
if (p->app_id_len > 0)
{
memcpy(p->app_id, send_req_data->app_id, p->app_id_len);
p->app_id[p->app_id_len] = '\0';
}
else
{
p->app_id[0] = '\0';
}
if (p->reply_app_id_len > 0)
{
memcpy(p->reply_app_id, send_req_data->reply_app_id, p->reply_app_id_len);
p->reply_app_id[p->reply_app_id_len] = '\0';
}
else
{
p->reply_app_id[0] = '\0';
}
if (p->start_cnt_id_len > 0)
{
memcpy(p->start_cnt_id, send_req_data->start_cnt_id, p->start_cnt_id_len);
p->start_cnt_id[p->start_cnt_id_len] = '\0';
p->mms_type = J2ME_MMS_RELATED;
}
else
{
p->start_cnt_id[0] = '\0';
p->mms_type = J2ME_MMS_MIXED;
}
if (peerBufLen > 0)
{
peer_buff_ptr = construct_peer_buff((kal_uint16) peerBufLen, 0, 0, TD_CTRL);
memcpy(get_pdu_ptr(peer_buff_ptr, &dummyLen), msg_info_data, peerBufLen);
}
else
{
peer_buff_ptr = NULL;
}
p->send_by_file = 0;
p->filepath_len = 0;
p->filepath[0] = 0;
j2me_mms_in_progress = KAL_TRUE;
jui_widget_show_connect_icon();
J2ME_mms_send_ilm(p, peer_buff_ptr, MSG_ID_WAP_MMC_SEND_APPMMS_REQ, wap_get_service_module(MSG_ID_WAP_MMC_SEND_APPMMS_REQ));
return J2ME_MMS_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -