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

📄 jsr205.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
 * 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 + -