📄 jsr205.c
字号:
* DESCRIPTION
* Create a MSG_ID_WAP_MMC_POST_APPMMS_MSG_PART_IND primitive to Java
* PARAMETERS
* result [IN]
* RETURNS
* void
*****************************************************************************/
void mmi_jsr_send_post_appmms_msg_part_ind(JsrResult result)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
wap_mmc_post_appmms_msg_part_ind_struct *myMsgPtr;
ilm_struct *ilm_ptr = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
myMsgPtr = (wap_mmc_post_appmms_msg_part_ind_struct*)
OslConstructDataPtr(sizeof(wap_mmc_post_appmms_msg_part_ind_struct));
myMsgPtr->result = (U8) result;
ilm_ptr = allocate_ilm(MOD_WAP);
ilm_ptr->src_mod_id = MOD_WAP;
ilm_ptr->sap_id = J2ME_WAP_SAP;
ilm_ptr->dest_mod_id = MOD_JASYN;
ilm_ptr->local_para_ptr = (local_para_struct*) myMsgPtr;
ilm_ptr->msg_id = MSG_ID_WAP_MMC_POST_APPMMS_MSG_PART_IND;
ilm_ptr->peer_buff_ptr = NULL;
msg_send_ext_queue(ilm_ptr);
}
/*****************************************************************************
* FUNCTION
* mmi_jsr_send_post_appmms_msg_part_rsp
* DESCRIPTION
* Create a MSG_ID_WAP_MMC_POST_APPMMS_MSG_PART_RES primitive to Java
* PARAMETERS
* msg [?]
* U8 result(?)
* RETURNS
* void
*****************************************************************************/
void mmi_jsr_send_post_appmms_msg_part_rsp(void *msg)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JsrResult result = JSR_RESULT_OK;
wap_mmc_post_appmms_msg_part_res_struct *Message;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (JSR_CNTX->state != JSR_STATE_PROCESS_SEND_MSG_BDY)
{
mmi_jsr_send_appmms_rsp(JSR_RESULT_ACCESS_DENY);
return;
}
Message = (wap_mmc_post_appmms_msg_part_res_struct*) msg;
/* add media object to MMS message */
result = mmi_jmms_jsr_add_media_object(JSR_CNTX->msgId, Message);
if (result != JSR_RESULT_OK)
{
mmi_jsr_send_appmms_rsp(result);
JsrCleanContext();
return;
}
/* increment current media object by 1 */
JSR_CNTX->curr_media_obj_no = JSR_CNTX->curr_media_obj_no + 1;
if ((JSR_CNTX->curr_media_obj_no) < (JSR_CNTX->total_media_obj_no))
{
JSR_CNTX->state = JSR_STATE_PROCESS_SEND_MSG_BDY;
mmi_jsr_send_post_appmms_msg_part_ind(JSR_RESULT_OK);
}
else
{
//JMMS function call
mmi_jmms_jsr_send_mms(mmi_jsr_send_appmms_rsp);
}
}
/*****************************************************************************
* FUNCTION
* mmi_jsr_check_recv_mms_for_java
* DESCRIPTION
* Check if the message is a java message and send indication to java task.
* PARAMETERS
* contentType [?] [?]
* msgId(?) [IN]
* char* appId(?)(?)
* RETURNS
* void
*****************************************************************************/
MMI_BOOL mmi_jsr_check_recv_mms_for_java(S8 *contentType)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S8 *str_pos = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "(%d) Content Type ( %s )", __LINE__, contentType));
// if ((contentType == NULL) || ((str_pos = strstr(contentType, "application-id")) == NULL))
if ((contentType == NULL) || ((str_pos = mmi_jmms_jsr_get_application_string_from_content_type(contentType, JSR_APPLICATION_ID)) == NULL))
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d) Normal MMS", __FILE__, __LINE__));
return FALSE;
}
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d) JAVA MMS", __FILE__, __LINE__));
return TRUE;
}
/*****************************************************************************
* FUNCTION
* mmi_jsr_add_recv_java_mms_content
* DESCRIPTION
*
* PARAMETERS
* msgId [IN]
* contentType [?]
* RETURNS
*
*****************************************************************************/
MMI_BOOL mmi_jsr_add_recv_java_mms_content(U32 msgId, S8 *contentType)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
S8 *str_pos = NULL;
S8 *reply_str_pos = NULL;
S8 *temp_str = NULL;
S8 *appId = NULL;
U32 len = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
// if ((contentType == NULL) || ((str_pos = strstr(contentType, "application-id")) == NULL))
if ((contentType == NULL) || ((str_pos = mmi_jmms_jsr_get_application_string_from_content_type(contentType, JSR_APPLICATION_ID)) == NULL))
{
return FALSE;
}
else
{
// reply_str_pos = strstr(contentType, "reply-to-application-id");
reply_str_pos = mmi_jmms_jsr_get_application_string_from_content_type(contentType, JSR_REPLY_TO_APPLICATION_ID);
/* if (reply_str_pos == NULL)
{
return FALSE;
}*/
/* if (reply_str_pos < str_pos)*/
if((reply_str_pos != NULL) && (reply_str_pos < str_pos))
{
// str_pos = strstr(str_pos + 1, "application-id");
str_pos = mmi_jmms_jsr_get_application_string_from_content_type(str_pos + 1, JSR_APPLICATION_ID);
if (str_pos == NULL)
{
return FALSE;
}
}
temp_str = str_pos;
str_pos = strstr(temp_str, "=");
temp_str = str_pos + 1;
str_pos = strstr(temp_str, ";");
if (str_pos != NULL)
{
len = strlen(temp_str) - strlen(str_pos);
}
else
{
len = strlen(temp_str);
}
appId = jdd_MemAlloc(sizeof(S8), (len + 1));
memcpy(appId, temp_str, len);
mmi_jsr_insert_msgId_to_appId_list(msgId, appId, FALSE);
if (TRUE == mmi_jsr_check_appId(appId))
{
mmi_jsr_send_appmms_new_mms_ind(appId, (U32) strlen((S8*) appId));
}
jdd_MemFree(appId);
return TRUE;
}
}
/*****************************************************************************
* FUNCTION
* mmi_jsr_send_appmms_new_mms_ind
* DESCRIPTION
* Create a MSG_ID_WAP_MMC_APPMMS_NEW_MMS_IND primitive to Java
* PARAMETERS
* appId [?]
* length [IN]
* RETURNS
* void
*****************************************************************************/
void mmi_jsr_send_appmms_new_mms_ind(char *appId, U32 length)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
wap_mmc_appmms_new_mms_ind_struct *myMsgPtr;
ilm_struct *ilm_ptr = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
myMsgPtr = (wap_mmc_appmms_new_mms_ind_struct*) OslConstructDataPtr(sizeof(wap_mmc_appmms_new_mms_ind_struct));
memcpy(myMsgPtr->app_id, appId, length);
myMsgPtr->app_id_len = length;
ilm_ptr = allocate_ilm(MOD_WAP);
ilm_ptr->src_mod_id = MOD_WAP;
ilm_ptr->sap_id = J2ME_WAP_SAP;
ilm_ptr->dest_mod_id = MOD_JASYN;
ilm_ptr->local_para_ptr = (local_para_struct*) myMsgPtr;
ilm_ptr->msg_id = MSG_ID_WAP_MMC_APPMMS_NEW_MMS_IND;
ilm_ptr->peer_buff_ptr = NULL;
msg_send_ext_queue(ilm_ptr);
}
/*****************************************************************************
* FUNCTION
* mmi_jsr_insert_msgId_to_appId_list
* DESCRIPTION
* Insert the message information in application object list.
* PARAMETERS
* msgId [IN]
* appId [?]
* is_checked [IN]
* RETURNS
* MMI_BOOL result
*****************************************************************************/
MMI_BOOL mmi_jsr_insert_msgId_to_appId_list(U32 msgId, char *appId, BOOL is_checked)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
jsr_appid_msgid_list *appid_list = NULL;
jsr_msg_info *msg_list = NULL;
MMI_BOOL result = FALSE;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_jsr_appid_object_list == NULL)
{
mmi_jsr_read_object_list_from_file();
}
appid_list = g_jsr_appid_object_list;
while (appid_list)
{
if ((appid_list->appId) && (strcmp((S8*) appid_list->appId, (S8*) appId) == 0))
{
result = mmi_jsr_insert_msg_info_to_list(&(appid_list->msgs), msgId, is_checked);
break;
}
appid_list = appid_list->next;
}
if (appid_list == NULL)
{
if (mmi_jsr_insert_msg_info_to_list(&msg_list, msgId, is_checked))
{
result = mmi_jsr_insert_appid_info_to_list(&appid_list, appId, msg_list);
g_jsr_appid_object_list = appid_list;
}
}
if (result == TRUE)
{
mmi_jsr_write_object_list_to_file();
}
return result;
}
/*****************************************************************************
* FUNCTION
* mmi_jsr_remove_msgId_from_appId_list
* DESCRIPTION
* Delete the message information from application object list.
* PARAMETERS
* msgId [IN]
* RETURNS
* MMI_BOOL result
*****************************************************************************/
MMI_BOOL mmi_jsr_remove_msgId_from_appId_list(U32 msgId)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
jsr_appid_msgid_list *appid_list = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (g_jsr_appid_object_list == NULL)
{
mmi_jsr_read_object_list_from_file();
}
appid_list = g_jsr_appid_object_list;
while (appid_list)
{
if (appid_list->msgs)
{
jsr_msg_info *msg_list = appid_list->msgs;
while (msg_list)
{
if (msg_list->msgId == msgId)
{
mmi_jsr_remove_msg_info_from_list(&(appid_list->msgs), msgId);
if (appid_list->msgs == NULL)
{
mmi_jsr_remove_appid_info_from_list(&g_jsr_appid_object_list, appid_list->appId);
}
mmi_jsr_write_object_list_to_file();
return TRUE;
}
msg_list = msg_list->next;
}
}
appid_list = appid_list->next;
}
return FALSE;
}
/*****************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -