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

📄 jsr205.c

📁 MTK手机平台的MMI部分的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:

    if (fh != NULL)
    {
        jdd_FSClose(fh);
    }

    if (file_handle != NULL)
    {
        jdd_FSDeinitialize(file_handle);
        file_handle = NULL;
    }

    if (msgInfo_p != NULL)
    {
        jdd_MemFree(msgInfo_p);
        msgInfo_p = NULL;
    }

    if (pInFilename != NULL)
    {
        jdd_MemFree(pInFilename);
        pInFilename = NULL;
    }

    return result;

}


/*****************************************************************************
 * FUNCTION
 *  mmi_jsr_read_folder_status_req_hldr
 * DESCRIPTION
 *  Create a WAP_MMC_READ_FOLDER_STATUS_REQ_IND primitive to L4
 * PARAMETERS
 *  msg     [?]     Message received from L4
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_jsr_read_folder_status_req_hldr(void *msg)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    wap_mmc_read_folder_status_req_ind_struct *Message;
    JsrFolderInfo *folderInfo = NULL;
    JsrMessageInfo *message_list = NULL;
    JsrResult result = JSR_RESULT_OK;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    Message = (wap_mmc_read_folder_status_req_ind_struct*) msg;

    PRINT_INFORMATION_2((MMI_TRACE_INFO,
                         "%s(%d):  MMI recives a wap_mmc_read_folder_status_req_ind signal, folder:%d and retrieval mode: %d. \n",
                         __FILE__, __LINE__, Message->folderId, Message->retrievalMode));
#if defined(MMS_SUPPORT)
    if (E_FALSE == jmms_is_ready())
    {
        mmi_jsr_read_folder_status_output_req_hldr(JSR_RESULT_MMS_NO_READY, NULL);
        return;
    }
#endif
    if (JSR_CNTX->state == JSR_STATE_IDLE)
    {
        if ((Message->folderId == JSR_INBOX)
            || (Message->folderId == JSR_OUTBOX)
            || (Message->folderId == JSR_SENT)
            || (Message->folderId == JSR_DRAFTS) || (Message->folderId == JSR_TEMPLATES))
        {
            if ((Message->retrievalMode == JSR_BASIC) || (Message->retrievalMode == JSR_FULL))
            {
                JSR_CNTX->state = JSR_STATE_READ_FOLDER;
                JSR_CNTX->retrievalMode = Message->retrievalMode;
                folderInfo = (JsrFolderInfo*) jdd_MemAlloc(sizeof(JsrFolderInfo), 1);
                if (folderInfo == NULL)
                {
                    ASSERT(0);
                }

                memset(folderInfo, 0, sizeof(JsrFolderInfo));

                /* JMMS function */
                mmi_jmms_at_get_folder_info(Message->folderId, folderInfo);
                if (folderInfo->numOfMsg > 0)
                {
                    message_list = (JsrMessageInfo*) jdd_MemAlloc((folderInfo->numOfMsg), sizeof(JsrMessageInfo));
                    if (message_list == NULL)
                    {
                        ASSERT(0);
                    }
                    memset(message_list, 0, (folderInfo->numOfMsg) * sizeof(JsrMessageInfo));
                }
                /* JMMS function */
                mmi_jmms_at_get_message_list(Message->folderId, message_list);
                result = mmi_jsr_write_folder_status_to_file((folderInfo->numOfMsg), message_list);
                if (message_list != NULL)
                {
                    jdd_MemFree(message_list);
                    message_list = NULL;
                }
                /* This block will add the MMS root folder path 
                   and JSR info file path into folderInfo. */
                {
                    int len = 100;
                    JDD_FSHANDLE filehandle = NULL;
                    S8 *pInFilename = NULL;
                    S8 *pOutFilename = NULL;
                    S8 *info_file_path = NULL;

                    /* for new phone suite */
                    if (filehandle == NULL)
                    {
                        jdd_FSInitialize(&filehandle);
                    }

                    pInFilename = (S8*) jdd_MemAlloc(sizeof(S8), 40);

                    AnsiiToUnicodeString((S8*) pInFilename, (S8*) "@mms");
                    ASSERT(E_TRUE == jdd_FSGetAbsoluteFilePath(filehandle, (JC_CHAR*) pInFilename, (JC_CHAR **) & pOutFilename));

                    if (filehandle != NULL)
                    {
                        jdd_FSDeinitialize(filehandle);
                        filehandle = NULL;
                    }

                    len = UCS2Strlen((S8*) pOutFilename) * ENCODING_LENGTH;
                    if (len <= 100)
                    {
                        memcpy(folderInfo->mmsHomeDirectory, pOutFilename, len);
                    }
                    else
                    {
                        memcpy(folderInfo->mmsHomeDirectory, pOutFilename, 100);
                        PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d):  The path of mms home directory  is too long.\n",
                                             __FILE__, __LINE__));
                    }
                    len = 0;
                    /* for new phone suite */
                    if (filehandle == NULL)
                    {
                        jdd_FSInitialize(&filehandle);
                    }

                    if(pOutFilename != NULL)
                    {
                        jdd_MemFree(pOutFilename);
                        pOutFilename = NULL;
                    }

                    memset(pInFilename, 0, 40);

                    AnsiiToUnicodeString((S8*) pInFilename, (S8*) JDD_FS_MMS_SYS_FOLDER);
                    ASSERT(E_TRUE == jdd_FSGetAbsoluteFilePath(filehandle, (JC_CHAR*) pInFilename, (JC_CHAR **) & pOutFilename));
                    info_file_path = jdd_MemAlloc(sizeof(S8), (pfnUnicodeStrlen((S8*) pOutFilename) + 9));
                    UnicodeToAnsii((S8*) info_file_path, (S8*) pOutFilename);
                    strcat(info_file_path, "\\");
                    strcat(info_file_path, JSR_INFO);

                    if(pOutFilename != NULL)
                    {
                        jdd_MemFree(pOutFilename);
                        pOutFilename = NULL;
                    }
                    
                    pOutFilename = jdd_MemAlloc(((strlen(info_file_path) + 1) * ENCODING_LENGTH), sizeof(S8));

                    AnsiiToUnicodeString((S8*) pOutFilename, (S8*) (info_file_path));
                    if (filehandle != NULL)
                    {
                        jdd_FSDeinitialize(filehandle);
                        filehandle = NULL;
                    }
                    len = UCS2Strlen((S8*) pOutFilename) * ENCODING_LENGTH;
                    if (len <= 100)
                    {
                        memcpy(folderInfo->infoFilePath, pOutFilename, len);
                    }
                    else
                    {
                        memcpy(folderInfo->infoFilePath, pOutFilename, 100);
                        PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d):  The path of info.db file is too long.\n",
                                             __FILE__, __LINE__));
                    }

                    if (pInFilename != NULL)
                    {
                        jdd_MemFree(pInFilename);
                        pInFilename = NULL;
                    }

                    if (info_file_path != NULL)
                    {
                        jdd_MemFree(info_file_path);
                        info_file_path = NULL;
                    }

                    if (pOutFilename != NULL)
                    {
                        jdd_MemFree(pOutFilename);
                        pOutFilename = NULL;
                    }
                }

                mmi_jsr_read_folder_status_output_req_hldr(result, folderInfo);
            }
            else
            {
                mmi_jsr_read_folder_status_output_req_hldr(JSR_RESULT_INVALID_PARAMETER, NULL);
            }
        }
        else
        {
            mmi_jsr_read_folder_status_output_req_hldr(JSR_RESULT_INVALID_PARAMETER, NULL);
        }
    }
    else
    {
        mmi_jsr_read_folder_status_output_req_hldr(JSR_RESULT_BUSY, NULL);
    }
    if (folderInfo != NULL)
    {
        jdd_MemFree(folderInfo);
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jsr_read_folder_status_output_req_hldr
 * DESCRIPTION
 *  Create a WAP_MMC_READ_FOLDER_STATUS_OUTPUT_REQ primitive to L4
 * PARAMETERS
 *  result          [IN]        
 *  folderInfo      [?]         
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_jsr_read_folder_status_output_req_hldr(JsrResult result, JsrFolderInfo *folderInfo)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    wap_mmc_read_folder_status_output_req_struct *myMsgPtr;
    ilm_struct *ilm_ptr = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    myMsgPtr = (wap_mmc_read_folder_status_output_req_struct*)
        OslConstructDataPtr(sizeof(wap_mmc_read_folder_status_output_req_struct));
    if (myMsgPtr)
    {
        memset((char*)(myMsgPtr) + 4, 0x00, (sizeof(wap_mmc_read_folder_status_output_req_struct) - 4));
        myMsgPtr->result = (U8) result;
        if (folderInfo)
        {
            myMsgPtr->numOfMsg = folderInfo->numOfMsg;
            myMsgPtr->numOfUnreadMsg = folderInfo->numOfUnreadMsg;

            memset(myMsgPtr->mmsHomeDirectory, 0x00, 100);
            memset(myMsgPtr->infoFilePath, 0x00, 100);

            memcpy(
                myMsgPtr->mmsHomeDirectory,
                folderInfo->mmsHomeDirectory,
                (UCS2Strlen((char*)folderInfo->mmsHomeDirectory) * 2));
            memcpy(
                myMsgPtr->infoFilePath,
                folderInfo->infoFilePath,
                (UCS2Strlen((char*)folderInfo->infoFilePath) * 2));
        }

        ilm_ptr = allocate_ilm(MOD_WAP);

        ilm_ptr->src_mod_id = MOD_WAP;
        ilm_ptr->sap_id = MMI_L4C_SAP;
        ilm_ptr->dest_mod_id = MOD_L4C;
        ilm_ptr->local_para_ptr = (local_para_struct*) myMsgPtr;
        ilm_ptr->msg_id = MSG_ID_WAP_MMC_READ_FOLDER_STATUS_OUTPUT_REQ;
        ilm_ptr->peer_buff_ptr = NULL;

        msg_send_ext_queue(ilm_ptr);

        if (result != JSR_RESULT_BUSY)
        {
            JsrCleanContext();
        }
        PRINT_INFORMATION_2((MMI_TRACE_INFO,
                             "%s(%d): JSR module returns wap_mmc_read_folder_status_output_req with result: %d, nMsg: %d, and nUnreadMsg: %d \n",
                             __FILE__, __LINE__, result, myMsgPtr->numOfMsg, myMsgPtr->numOfUnreadMsg));
    }
    else
    {
        PRINT_INFORMATION_2((MMI_TRACE_INFO,
                             "%s(%d): JSR module can't get memory for wap_mmc_upload_msg_output_req_struct \n",
                             __FILE__, __LINE__));
        ASSERT(0);
    }
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jsr_upload_msg_req_hldr
 * DESCRIPTION
 *  Create a MSG_ID_WAP_MMC_UPLOAD_MSG_REQ_IND primitive to L4
 * PARAMETERS
 *  msg     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void mmi_jsr_upload_msg_req_hldr(void *msg)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    wap_mmc_upload_msg_req_ind_struct *Message;
    int len = 0;
    char *fname = NULL;
    JsrResult result = JSR_RESULT_OK;
    U32 msgId = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    Message = (wap_mmc_upload_msg_req_ind_struct*) msg;
#if defined(MMS_SUPPORT)//DIlip
    if (E_FALSE == jmms_is_ready())
    {
        mmi_jsr_upload_msg_output_req_hldr(JSR_RESULT_MMS_NO_READY, 0);
        return;
    }
#endif
    /* Check the MMS folder for Max messages. */

    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d):  MMI recives a wap_mmc_upload_msg_req_ind signal. \n", __FILE__,
                         __LINE__));

    if (JSR_CNTX->state == JSR_STATE_IDLE)
    {
        JSR_CNTX->op = JSR_OP_UPLOAD_MSG;
        JSR_CNTX->state = JSR_STATE_UPLOAD_MSG;
        if (Message->filePath)
        {
            len = mmi_charset_ucs2_to_utf8_length_in_bytes(Message->filePath);
            if (len < 100)
            {
                fname = (S8*) jdd_MemAlloc(sizeof(S8), 100);
                if (NULL == fname)

⌨️ 快捷键说明

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