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

📄 jwa_mms.c

📁 java 1.1 gemini 08_16
💻 C
📖 第 1 页 / 共 5 页
字号:
 * FUNCTION
 *  J2ME_mms_reset_recv_data
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void J2ME_mms_reset_recv_data()
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (j2me_mms_recv_data.start_cnt_id != NULL)
    {
        jvm_free(j2me_mms_recv_data.start_cnt_id);
        j2me_mms_recv_data.start_cnt_id = NULL;
    }

    if (j2me_mms_recv_data.reply_app_id != NULL)
    {
        jvm_free(j2me_mms_recv_data.reply_app_id);
        j2me_mms_recv_data.reply_app_id = NULL;
    }

    if (j2me_mms_recv_data.peer_buffer != NULL)
    {
        jvm_free(j2me_mms_recv_data.peer_buffer);
        j2me_mms_recv_data.peer_buffer = NULL;
    }
}


/*****************************************************************************
 * FUNCTION
 *  J2ME_mms_reset_recv_part_data
 * DESCRIPTION
 *  
 * PARAMETERS
 *  filepath        [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void J2ME_mms_reset_recv_part_data(kal_bool filepath)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (j2me_mms_recv_part_data.content_type != NULL)
    {
        jvm_free(j2me_mms_recv_part_data.content_type);
        j2me_mms_recv_part_data.content_type = NULL;
    }

    if (j2me_mms_recv_part_data.content_id != NULL)
    {
        jvm_free(j2me_mms_recv_part_data.content_id);
        j2me_mms_recv_part_data.content_id = NULL;
    }

    if (j2me_mms_recv_part_data.content_location != NULL)
    {
        jvm_free(j2me_mms_recv_part_data.content_location);
        j2me_mms_recv_part_data.content_location = NULL;
    }

    if (filepath && j2me_mms_recv_part_data.filepath != NULL)
    {
        jvm_free(j2me_mms_recv_part_data.filepath);
        j2me_mms_recv_part_data.filepath = NULL;
    }
}


/*****************************************************************************
 * FUNCTION
 *  J2ME_mms_get_message_sent_time
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
kal_uint64 J2ME_mms_get_message_sent_time()
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    return (kal_uint64) j2me_mms_recv_data.date;
}


/*****************************************************************************
 * FUNCTION
 *  J2ME_mms_save_result
 * DESCRIPTION
 *  
 * PARAMETERS
 *  result      [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void J2ME_mms_save_result(MmcResult result)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (result == MMC_RESULT_OK)
    {
        j2me_mms_result = 0;
    }
    else
    {
        j2me_mms_result = -1;
    }
}


/*****************************************************************************
 * FUNCTION
 *  readMmsAsyncEvent
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  
 *****************************************************************************/
unsigned long readMmsAsyncEvent()
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint32 event_group, ret_msgid;
    kal_status result;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    flag_wait_async_mms_msgid = KAL_TRUE;

    result = kal_retrieve_eg_events(J2ME_async_mms_eventgroup, 1, KAL_OR_CONSUME, &event_group, KAL_NO_SUSPEND);

    if (result == KAL_NOT_PRESENT)
    {
        return (-2);    /* IO_WOULDBLOCK */
    }
    else
    {
        ret_msgid = J2ME_async_mms_msgid;
        J2ME_async_mms_msgid = 0;
        flag_wait_async_mms_msgid = KAL_FALSE;

        /* 2nd bit notify complete retreive async event */
        kal_set_eg_events(J2ME_async_mms_eventgroup, 0x2, KAL_OR);

        return ret_msgid;
    }
}


/*****************************************************************************
 * FUNCTION
 *  J2ME_mms_response_handler
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void J2ME_mms_response_handler(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (J2ME_async_mms_msgid && flag_wait_async_mms_msgid)
    {
        /* Pedning async event */
        kal_uint32 event_group, polling = 0;
        kal_status result;

        while (1)
        {
            /* 2nd bit indicate wait pending async event consumed */
            result = kal_retrieve_eg_events(J2ME_async_mms_eventgroup, 0x2, KAL_OR_CONSUME, &event_group, KAL_NO_SUSPEND);

            if (result != KAL_NOT_PRESENT || polling++ >= 100)
            {
                break;
            }
            /* To avoid deadlock and complicated timer control, use polling */
            kal_sleep_task(1);
        }
    }

    J2ME_async_mms_msgid = ilm_ptr->msg_id;

    switch (ilm_ptr->msg_id)
    {
        case MSG_ID_WAP_MMC_SEND_APPMMS_RSP:
        {
            wap_mmc_send_appmms_rsp_struct *p = (wap_mmc_send_appmms_rsp_struct*) ilm_ptr->local_para_ptr;

            J2ME_mms_save_result(p->result);
            
            if (j2me_mms_in_progress)
            {
                jui_widget_hide_connect_icon();
            }
            
            j2me_mms_in_progress = KAL_FALSE;            
        }
            break;

        case MSG_ID_WAP_MMC_POST_APPMMS_MSG_PART_IND:
        {
            wap_mmc_post_appmms_msg_part_ind_struct *p =
                (wap_mmc_post_appmms_msg_part_ind_struct*) ilm_ptr->local_para_ptr;

            J2ME_mms_save_result(p->result);
        }
            break;

        case MSG_ID_WAP_MMC_CFG_APPMMS_APPID_RSP:
        {
            wap_mmc_cfg_appmms_appid_rsp_struct *p = (wap_mmc_cfg_appmms_appid_rsp_struct*) ilm_ptr->local_para_ptr;

            J2ME_mms_save_result(p->result);

            if (p->result == MMC_RESULT_OK && j2me_mms_temp_appid.app_id_len != 0)
            {
                if (j2me_mms_register_type == WMA_REGISTRY)
                {
                    if (j2me_mms_registering)
                    {
                        J2ME_mms_add_appid();
                    }
                    else
                    {
                        J2ME_mms_delete_appid();
                    }
                }
            }
            j2me_mms_registering = KAL_FALSE;
            J2ME_mms_reset_temp_appid();

            if (j2me_mms_register_type == PUSH_REGISTRY)
            {
                J2ME_async_mms_msgid = 0;
            }
        }
            break;

        case MSG_ID_WAP_MMC_CHECK_APPMMS_COMING_RSP:
        {
            wap_mmc_check_appmms_coming_rsp_struct *p =
                (wap_mmc_check_appmms_coming_rsp_struct*) ilm_ptr->local_para_ptr;

            if (p->result)
            {
                j2me_mms_result = 1;
            }
            else
            {
                j2me_mms_result = 0;
            }
        }
            break;

        case MSG_ID_WAP_MMC_RECV_APPMMS_RSP:
        {
            kal_uint16 len;
            wap_mmc_recv_appmms_rsp_struct *p = (wap_mmc_recv_appmms_rsp_struct*) ilm_ptr->local_para_ptr;
            kal_uint8 *pdu_ptr = NULL;

            J2ME_mms_reset_recv_data();
            J2ME_mms_save_result(p->result);

            if (p->result == MMC_RESULT_OK)
            {
                pdu_ptr = get_pdu_ptr(ilm_ptr->peer_buff_ptr, &len);
                
                /* j2me_mms_recv_data.transId = p->transId; */
                j2me_mms_recv_data.priority = p->priority;
                j2me_mms_recv_data.from_addr_no = p->from_addr_no;
                j2me_mms_recv_data.to_addr_no = p->to_addr_no;
                j2me_mms_recv_data.cc_addr_no = p->cc_addr_no;
                j2me_mms_recv_data.bdy_part_no = p->bdy_part_no;
                j2me_mms_recv_data.date = (jlong) p->date;
                j2me_mms_recv_data.start_cnt_id_len = p->start_cnt_id_len;
                j2me_mms_recv_data.reply_app_id_len = p->reply_app_id_len;
                j2me_mms_recv_data.peer_buffer_len = len;

                if (p->bdy_part_no == 0)
                {
                    j2me_mms_in_progress = KAL_FALSE;
                }

                if (j2me_mms_recv_data.start_cnt_id_len > 0)
                {
                    j2me_mms_recv_data.start_cnt_id = (kal_uint8*) jvm_malloc(p->start_cnt_id_len);
                    if (j2me_mms_recv_data.start_cnt_id == NULL)
                    {
                        J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
                        break;
                    }
                    memcpy(j2me_mms_recv_data.start_cnt_id, p->start_cnt_id, p->start_cnt_id_len);
                }

                if (j2me_mms_recv_data.reply_app_id_len > 0)
                {
                    j2me_mms_recv_data.reply_app_id = (kal_uint8*) jvm_malloc(p->reply_app_id_len);
                    if (j2me_mms_recv_data.reply_app_id == NULL)
                    {
                        J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
                        break;
                    }
                    memcpy(j2me_mms_recv_data.reply_app_id, p->reply_app_id, p->reply_app_id_len);
                }

                if (pdu_ptr != NULL && len > 0)
                {
                    j2me_mms_recv_data.peer_buffer = (kal_uint8*) jvm_malloc(len);
                    if (j2me_mms_recv_data.peer_buffer == NULL)
                    {
                        J2ME_mms_save_result(MMC_RESULT_INSUFFICIENT_MEMORY);
                        break;
                    }
                    memcpy(j2me_mms_recv_data.peer_buffer, pdu_ptr, len);
                }
            }
            else
            {
                j2me_mms_in_progress = KAL_FALSE;
            }
        }
            break;

        case MSG_ID_WAP_MMC_READ_APPMMS_MSG_PART_RSP:
        {

            wap_mmc_read_appmms_msg_part_rsp_struct *p =
                (wap_mmc_read_appmms_msg_part_rsp_struct*) ilm_ptr->local_para_ptr;

            J2ME_mms_reset_recv_part_data(KAL_TRUE);
            J2ME_mms_save_result(p->result);

            if (p->result == MMC_RESULT_OK)
            {
                j2me_mms_recv_part_data.encoding_scheme = p->encoding_scheme;
                j2me_mms_recv_part_data.content_type_len = p->content_type_len;
                j2me_mms_recv_part_data.content_id_len = p->content_id_len;
                j2me_mms_recv_part_data.content_location_len = p->content_location_len;
                j2me_mms_recv_part_data.filepath_len = p->filepath_len;

                if (j2me_mms_recv_part_data.content_type_len > 0)
                {

⌨️ 快捷键说明

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