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

📄 jmmsprotocol.c

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