📄 jmmsprotocol.c
字号:
#endif /* __MMI_UNIFIED_MESSAGE__ */
/* ... Add More MMI header */
#include "gpioInc.h"
/*****************************************************************************
* Define
*****************************************************************************/
/*****************************************************************************
* Typedef
*****************************************************************************/
/*****************************************************************************
* Local Variable
*****************************************************************************/
/*****************************************************************************
* Local Function
*****************************************************************************/
/* /manish */
extern U16 DeleteScreenFromToNnodes(U16 ScrId, U16 num_nodes);
extern U8 DeleteFromScrUptoScr(U16 beyondScrnid, U16 tillScrnid);
extern int wap_is_ready(void);
extern JC_RETCODE FreeMessageHeaders(MESSAGE_HEADERS **ppMessageHeaders);
/*****************************************************************************
* Global Variable
*****************************************************************************/
static U16 interupt_screen_title;
static U8 g_mms_downloading_busy = 0;
static FuncPtr g_end_key_processing_handler;
extern U8 *g_media_buffer_p;
/* Compiler warning removal */
static void mmi_jmms_end_key_progressing(void);
static void mmi_jmms_set_end_key_progressing_handler(void);
/*****************************************************************************
* Global Function
*****************************************************************************/
extern em_wap_user_agent_brand_enum wap_get_user_agent_brand(void);
extern void TurnOnBacklight(gpio_backlight_time_enum timer_enum);
extern void TurnOffBacklight(void);
/*****************************************************************************
* FUNCTION
* mmi_jmms_create_mms_queue
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
* void
*****************************************************************************/
void mmi_jmms_create_mms_queue(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
jdd_QueueCreate(
(JC_INT32) E_TASK_MMS_UI,
"MMS UI QUEUE",
sizeof(JC_EVENT_DATA),
MAX_NUMBER_OF_EVENTS_IN_MMS_QUEUE,
E_FALSE);
}
/*****************************************************************************
* FUNCTION
* mmi_jmms_ui_events_hdlr
* DESCRIPTION
*
* PARAMETERS
* pEventData [?] [?] [?]
* RETURNS
* void
*****************************************************************************/
void mmi_jmms_ui_events_hdlr(JC_EVENT_DATA *pEventData)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "mmi_jmms_ui_events_hdlr"));
switch (pEventData->iEventType)
{
case E_MMS_GET_MSG_LIST_EVENT:
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "JMMS Event: E_MMS_GET_MSG_LIST_EVENT"));
mmi_jmms_recieve_get_msg_list_event(pEventData->pEventInfo);
break;
}
case E_COMM_ERROR_INDICATION_EVENT:
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "JMMS Event: E_COMM_ERROR_INDICATION_EVENT"));
mmi_jmms_retry_for_error_in_comm(pEventData->pEventInfo);
break;
}
}
}
/*****************************************************************************
* FUNCTION
* mmi_jmms_init_protocol
* DESCRIPTION
*
* PARAMETERS
* void
* RETURNS
*
*****************************************************************************/
JC_RETCODE mmi_jmms_init_protocol(void)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_RETCODE eRet = JC_OK;
JC_TASK_INFO appTaskInfo = {0, };
JC_TASK_INFO transportTaskInfo = {0, };
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "mmi_jmms_init_protocol"));
appTaskInfo.iTaskID = (JC_INT32) E_TASK_MMS_UI;
appTaskInfo.iAppID = (JC_INT32) E_TASK_MMS_UI;
transportTaskInfo.iTaskID = (JC_INT32) E_TASK_TRANSPORT;
transportTaskInfo.iAppID = (JC_INT32) E_TASK_TRANSPORT;
eRet = jdi_CommunicationInitialize(&appTaskInfo, &transportTaskInfo, g_jmms_context, &g_jmms_context->hCommHandle);
if (JC_OK != eRet)
{
goto error;
}
eRet = jdi_CommunicationRegisterHeaderCallback(
g_jmms_context->hCommHandle,
(COMM_URL_IND_HEADER_FNC) mmi_jmms_header_ind_callback);
if (JC_OK != eRet)
{
goto error;
}
eRet = jdi_CommunicationRegisterURLIndCallback(
g_jmms_context->hCommHandle,
(COMM_URL_IND_RESPONSE_FNC) mmi_jmms_url_ind_callback);
if (JC_OK != eRet)
{
goto error;
}
eRet = jdi_CommunicationRegisterStopIndCallback(
g_jmms_context->hCommHandle,
(COMM_STOP_IND_FNC) mmi_jmms_comm_stop_callback);
if (JC_OK != eRet)
{
goto error;
}
eRet = jdi_CommunicationRegisterPushIndCallback(
g_jmms_context->hCommHandle,
(COMM_PUSH_IND_FNC) mmi_jmms_push_ind_callback);
if (JC_OK != eRet)
{
goto error;
}
eRet = jdi_CommunicationRegisterErrIndCallback(
g_jmms_context->hCommHandle,
(COMM_ERR_IND_FNC) mmi_jmms_error_ind_callback);
if (JC_OK != eRet)
{
goto error;
}
eRet = jdi_CommunicationRegisterProgressIndCallback(
g_jmms_context->hCommHandle,
(COMM_PROGRESS_IND_FNC) mmi_jmms_progress_ind_callback);
if (JC_OK != eRet)
{
goto error;
}
eRet = mmi_jmms_set_profile();
error:
return eRet;
}
/*****************************************************************************
* FUNCTION
* mmi_jmms_progress_ind_callback
* DESCRIPTION
*
* PARAMETERS
* jmms_context [?] [?] [?]
* uiReferenceID [IN]
* pProgressInd [?] [?] [?]
* RETURNS
* void
*****************************************************************************/
void mmi_jmms_progress_ind_callback(
jmms_context_struct *jmms_context,
JC_UINT32 uiReferenceID,
COMM_PROGRESS_IND *pProgressInd)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_UINT32 percentage_of_progress = 0;
S8 tmp_str_ascii[20] = {0, };
S8 tmp_str_ucs2[40] = {0};
S8 tmp_buff_ucs2[5] = {0};
U32 len = 0, temp_len = 0;
S32 size_kb = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/* /update only for Deffered Downlaod/New MMS Send */
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "JMMS mmi_jmms_progress_ind_callback, with uiReferenceID", uiReferenceID));
if (g_jmms_context->uiReferenceID == uiReferenceID)
{
if (g_jmms_context->progress_screen_title == STR_ID_PROGRESS_SENDING)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "JMMS Screen ID: STR_ID_PROGRESS_SENDING"));
if (pProgressInd->eStackStatus == E_COMM_STACK_CONNECTING)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s(%d)", "JMMS Connecting Screen"));
len = pfnUnicodeStrlen((S8*) GetString(STR_ID_JMMS_CONNECTING));
if (len > (MAX_PROGRESS_SCREEN_HINT_LEN - 1))
{
len = (MAX_PROGRESS_SCREEN_HINT_LEN - 1);
}
memset(g_jmms_context->g_jmms_progress_str, 0, MAX_PROGRESS_SCREEN_HINT_LEN * ENCODING_LENGTH);
pfnUnicodeStrncpy(g_jmms_context->g_jmms_progress_str, GetString(STR_ID_JMMS_CONNECTING), len);
AnsiiToUnicodeString((S8*) tmp_buff_ucs2, (S8*) "\n");
if ((S32)len <(MAX_PROGRESS_SCREEN_HINT_LEN - 1) - (pfnUnicodeStrlen((S8*) tmp_buff_ucs2)))
{
len = len + pfnUnicodeStrlen((S8*) tmp_buff_ucs2);
pfnUnicodeStrcat(g_jmms_context->g_jmms_progress_str, (S8*) tmp_buff_ucs2);
}
}
else if(pProgressInd->eStackStatus == E_COMM_STACK_CONNECTED)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "JMMS Connected for sending"));
if(!isInCall() && (GetActiveScreenId() == SCR_ID_JMMS_PROGRESS))
{
SetKeyHandler(mmi_jmms_end_comm, KEY_END, KEY_EVENT_DOWN);
}
else
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "End Key Not set in Progress_ind"));
sprintf(tmp_str_ascii, "%d %%", percentage_of_progress);
AnsiiToUnicodeString(tmp_str_ucs2, tmp_str_ascii);
len = pfnUnicodeStrlen((S8*) GetString(STR_ID_PROGRESS_SENDING));
AnsiiToUnicodeString((S8*) tmp_buff_ucs2, (S8*) "\n");
len = len + pfnUnicodeStrlen((S8*) tmp_buff_ucs2);
len = len + pfnUnicodeStrlen(tmp_str_ucs2);
if (len > (MAX_PROGRESS_SCREEN_HINT_LEN - 1))
{
len = 0;
}
memset(g_jmms_context->g_jmms_progress_str, 0, MAX_PROGRESS_SCREEN_HINT_LEN * ENCODING_LENGTH);
if (len != 0)
{
pfnUnicodeStrcpy(g_jmms_context->g_jmms_progress_str, GetString(STR_ID_PROGRESS_SENDING));
pfnUnicodeStrcat(g_jmms_context->g_jmms_progress_str, (S8*) tmp_buff_ucs2);
pfnUnicodeStrcat(g_jmms_context->g_jmms_progress_str, tmp_str_ucs2);
}
else
{
pfnUnicodeStrcpy(g_jmms_context->g_jmms_progress_str, tmp_str_ucs2);
}
}
else if (pProgressInd->eStackStatus == E_COMM_STACK_SENDING)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "JMMS E_COMM_STACK_SENDING"));
if(!isInCall() && (GetActiveScreenId() == SCR_ID_JMMS_PROGRESS))
{
SetKeyHandler(mmi_jmms_end_comm, KEY_END, KEY_EVENT_DOWN);
}
else
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "End Key Not set in Progress_ind")); if ((pProgressInd->uiTotalBytesToSend) != 0)
{
percentage_of_progress = (pProgressInd->uiBytesSent) * 100;
percentage_of_progress = percentage_of_progress / (pProgressInd->uiTotalBytesToSend);
}
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s%d", "JMMS Sending Progress Percentage = ",
percentage_of_progress));
sprintf(tmp_str_ascii, "%d %%", percentage_of_progress);
AnsiiToUnicodeString(tmp_str_ucs2, tmp_str_ascii);
len = pfnUnicodeStrlen((S8*) GetString(STR_ID_PROGRESS_SENDING));
AnsiiToUnicodeString((S8*) tmp_buff_ucs2, (S8*) "\n");
len = len + pfnUnicodeStrlen((S8*) tmp_buff_ucs2);
len = len + pfnUnicodeStrlen(tmp_str_ucs2);
if (len > (MAX_PROGRESS_SCREEN_HINT_LEN - 1))
{
len = 0;
}
memset(g_jmms_context->g_jmms_progress_str, 0, MAX_PROGRESS_SCREEN_HINT_LEN * ENCODING_LENGTH);
if (len != 0)
{
pfnUnicodeStrcpy(g_jmms_context->g_jmms_progress_str, GetString(STR_ID_PROGRESS_SENDING));
pfnUnicodeStrcat(g_jmms_context->g_jmms_progress_str, (S8*) tmp_buff_ucs2);
pfnUnicodeStrcat(g_jmms_context->g_jmms_progress_str, tmp_str_ucs2);
}
else
{
pfnUnicodeStrcpy(g_jmms_context->g_jmms_progress_str, tmp_str_ucs2);
}
}
else
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s%d", "Stack Status=%d Connect=%d Sent=%d",
pProgressInd->eStackStatus,pProgressInd->eDataConnectionStatus,pProgressInd->uiBytesSent));
}
}
else if (g_jmms_context->progress_screen_title == STR_ID_JMMS_MMS_DOWNLOADING)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "JMMS Screen ID: STR_ID_PROGRESS_DOWNLOADING"));
if (pProgressInd->eStackStatus == E_COMM_STACK_CONNECTING)
{
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "JMMS Connecting Screen"));
memset(g_jmms_context->g_jmms_progress_str, 0, MAX_PROGRESS_SCREEN_HINT_LEN * ENCODING_LENGTH);
len = pfnUnicodeStrlen((S8*) GetString(STR_ID_JMMS_MMS_DOWNLOADING));
if (len > (MAX_PROGRESS_SCREEN_HINT_LEN - 1))
{
pfnUnicodeStrncpy(
g_jmms_context->g_jmms_progress_str,
GetString(STR_ID_JMMS_CONNECTING),
(MAX_PROGRESS_SCREEN_HINT_LEN - 1));
}
else
{
pfnUnicodeStrcpy(g_jmms_context->g_jmms_progress_str, GetString(STR_ID_JMMS_CONNECTING));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -