📄 jsr205.c
字号:
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 + -