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

📄 jprovoma.c

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

                    }

                }
                else if (strcmp(parm_element, NAP_ADDRESS) == 0)
                {
                    attr_p = attr_p->next;
                    if (g_prov_bearer == PROV_GPRS_BEARER)
                    {
                        len = UCS2Strlen((S8*) attr_p->value);
                        if (len >= MAX_GPRS_MMI_APN_LEN)
                        {
                            len = MAX_GPRS_MMI_APN_LEN - 1;
                        }
                        UnicodeNToAnsii(
                            (S8*) accountData_p->dataAccountType.gprsAccount.apn,
                            (S8*) attr_p->value,
                            len * ENCODING_LENGTH);
                        accountData_p->dataAccountType.gprsAccount.apn[len] = '\0';
                    }
                    else if (g_prov_bearer == PROV_CSD_BEARER)
                    {
                        if (strcmp(attr_p->name, VALUE) == 0)
                        {
                            len = UCS2Strlen((S8*) attr_p->value);
                            if (len >= PROV_MAX_DIAL_NUM_LEN)
                            {
                                len = PROV_MAX_DIAL_NUM_LEN - 1;
                            }

                            if (mmi_phb_op_check_valid_number((S8*) attr_p->value))
                            {
                                UnicodeNToAnsii(
                                    (S8*) accountData_p->dataAccountType.csdAccount.csdDialString,
                                    (S8*) attr_p->value,
                                    len * ENCODING_LENGTH);
                                accountData_p->dataAccountType.csdAccount.csdDialString[len] = '\0';
                                accountData_p->dataAccountType.csdAccount.csdDialNumType = CSMCC_DEFAULT_ADDR_TYPE;
                            }
                            else
                            {
                                memset(accountData_p->dataAccountType.csdAccount.csdDialString, 0, MAX_DIAL_NUM_LEN);
                                accountData_p->dataAccountType.csdAccount.csdDialNumType = CSMCC_DEFAULT_ADDR_TYPE;
                            }
                        }
                    }
                }

                else if (strcmp(parm_element, CALLTYPE) == 0)
                {
                    attr_p = attr_p->next;
                    if (g_prov_bearer == PROV_CSD_BEARER)
                    {
                        if (strcmp(attr_p->name, VALUE) == 0)
                        {
                            UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                            if (strcmp(parm_element, ANALOG_MODEM) == 0)
                            {
                                accountData_p->dataAccountType.csdAccount.callType = CSMCC_ITC_3_1_K_AUDIO;
                            }
                            else if ((strcmp(parm_element, "V.120") == 0) ||
                                     ((strcmp(parm_element, "V.110") == 0) || (strcmp(parm_element, "X.31") == 0)))
                            {
                                accountData_p->dataAccountType.csdAccount.callType = CSMCC_ITC_UDI;
                            }
                            else
                            {
                                accountData_p->dataAccountType.csdAccount.callType = CSMCC_ITC_3_1_K_AUDIO;
                            }
                        }
                    }
                }

                else if (strcmp(parm_element, LINKSPEED) == 0)
                {
                    attr_p = attr_p->next;
                    if (g_prov_bearer == PROV_CSD_BEARER)
                    {
                        if (strcmp(attr_p->name, VALUE) == 0)
                        {
                            UnicodeToAnsii(parm_element, (S8*) attr_p->value);

                            if (strcmp(parm_element, AUTOBAUDING) == 0 || strcmp(parm_element, "9600") == 0)
                            {
                                accountData_p->dataAccountType.csdAccount.linkSpeed = CSD_PROF_RATE_9600;
                            }
                            else if (strcmp(parm_element, "4800") == 0)
                            {
                                accountData_p->dataAccountType.csdAccount.linkSpeed = CSD_PROF_RATE_4800;
                            }
                            else if (strcmp(parm_element, "14400") == 0)
                            {
                                accountData_p->dataAccountType.csdAccount.linkSpeed = CSD_PROF_RATE_14400;
                            }
                            else
                            {
                                accountData_p->dataAccountType.csdAccount.linkSpeed = CSD_PROF_RATE_9600;
                            }
                        }
                    }
                }
                else if (strcmp(parm_element, "DNS-ADDR") == 0)
                {

                    attr_p = attr_p->next;
                    if (g_prov_bearer == PROV_CSD_BEARER)
                    {
                        if (strcmp(attr_p->name, VALUE) == 0)
                        {
                            PROV_RETCODE i_ret = PROV_OK;
                            U8 proxy_ip[MAX_PART_IP_ADDRESS];

                            UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                            i_ret = mmi_prov_convert_ip_string_to_array(parm_element, proxy_ip);
                            if (i_ret == PROV_ERR)
                            {
                                memset(proxy_ip, 0, MAX_PART_IP_ADDRESS);
                            }
                            memcpy(accountData_p->dataAccountType.csdAccount.dns_ip, proxy_ip, MAX_PART_IP_ADDRESS);
                        }
                    }

                }
            #ifdef __GPRS_MODE__
                else if (strcmp(parm_element, MAX_SDU_SIZE) == 0)
                {
                    attr_p = attr_p->next;
                    if (strcmp(attr_p->name, VALUE) == 0)
                    {
                        UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                        /* g_prov_set_gprs_req_p->gprs_account.req_qos.max_sdu_size=atoi(parm_element); */
                    }

                }
                else if (strcmp(parm_element, "GUARANTEED-BITRATE-UPLINK") == 0)
                {
                    attr_p = attr_p->next;
                    if (strcmp(attr_p->name, VALUE) == 0)
                    {
                        UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                        /* g_prov_set_gprs_req_p->gprs_account.req_qos.guarntd_bit_rate_up_lnk=atoi(parm_element); */

                    }

                }
                else if (strcmp(parm_element, "GUARANTEED-BITRATE-DNLINK") == 0)
                {
                    attr_p = attr_p->next;
                    if (strcmp(attr_p->name, VALUE) == 0)
                    {
                        UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                        /* g_prov_set_gprs_req_p->gprs_account.req_qos.guarntd_bit_rate_down_lnk=atoi(parm_element); */
                    }

                }
                else if (strcmp(parm_element, "TRAFFIC-HANDL-PRIO") == 0)
                {
                    attr_p = attr_p->next;
                    if (strcmp(attr_p->name, VALUE) == 0)
                    {
                        UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                        /* g_prov_set_gprs_req_p->gprs_account.req_qos.traffic_hndl_priority=atoi(parm_element); */
                    }

                }
                else if (strcmp(parm_element, "TRANSFER-DELAY") == 0)
                {
                    attr_p = attr_p->next;
                    if (strcmp(attr_p->name, VALUE) == 0)
                    {
                        UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                        /* g_prov_set_gprs_req_p->gprs_account.req_qos.transfer_delay=atoi(parm_element); */
                    }

                }

                else if (strcmp(parm_element, "SDU-ERROR-RATIO") == 0)
                {
                    attr_p = attr_p->next;
                    if (strcmp(attr_p->name, VALUE) == 0)
                    {
                        UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                        /* g_prov_set_gprs_req_p->gprs_account.req_qos.sdu_err_ratio=atoi(parm_element); */
                    }
                }
            #endif /* __GPRS_MODE__ */ 
            }
        }
        root_p = root_p->next;
        if (root_p != NULL)
        {
            attr_p = root_p->attribute_list;
            if (attr_p == NULL && root_p->name == NULL)
            {
                if (!mmi_prov_oma_check_if_redundant_napdef(g_prov_napdef_data_p, accountData_p))
                {
                    mmi_prov_oma_add_napdef_info(&g_prov_napdef_data_p, accountData_p);
                }
                *nextroot_p = root_p;
                return i_ret;
            }
        }
        else
        {
            if (!mmi_prov_oma_check_if_redundant_napdef(g_prov_napdef_data_p, accountData_p))
            {
                mmi_prov_oma_add_napdef_info(&g_prov_napdef_data_p, accountData_p);
            }
            *nextroot_p = root_p;
            return i_ret;
        }
    }
    return i_ret;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_prov_oma_handle_pxlogical_tag
 * DESCRIPTION
 *  This function deals with the PXLOGICAL characteristic tag and its PARM elements
 * PARAMETERS
 *  nextroot_p      [IN]        IN\OUT
 * RETURNS
 *  PROV_OK
 *****************************************************************************/
PROV_RETCODE mmi_prov_oma_handle_pxlogical_tag(TAG **nextroot_p)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U32 len;
    PROV_RETCODE i_ret = PROV_OK;
    ATTRIBUTE *attr_p = NULL;
    TAG *root_p;
    S8 parm_element[PROV_OMA_MIN_SIZE_REQ + 1];
    prov_log_proxy_data_struct *logProxyData_p;
    prov_phy_proxy_data_struct *phyProxyData_p;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    logProxyData_p = jdd_MemAlloc(sizeof(prov_log_proxy_data_struct), 1);
    logProxyData_p->physicalProxy = NULL;
	memset((void *)&prov_proxy_port , 0 , sizeof(prov_proxy_port));

    root_p = *nextroot_p;
    root_p = root_p->next;
    attr_p = root_p->attribute_list;

    while (root_p != NULL)
    {

        if (strcmp(root_p->name, CHARACTERISTIC) == 0)
        {
            if (!mmi_prov_oma_check_if_redundant_logical_proxy(g_prov_proxy_data_p, logProxyData_p))
            {
                mmi_prov_oma_add_logical_proxy_info(&g_prov_proxy_data_p, logProxyData_p);
            }
            goto next;
          next:
            {
                if (root_p != NULL)
                {
                    UnicodeToAnsii(parm_element, (S8*) root_p->attribute_list->value);
                    if (strcmp(parm_element, PXPHYSICAL) == 0)
                    {
                        mmi_prov_oma_handle_pxphysical_tag(&root_p);
                        goto next;
                    }
                    else if (strcmp(parm_element, PXAUTHINFO) == 0)
                    {
                        mmi_prov_oma_handle_pxauthinfo_tag(&root_p, &logProxyData_p);
                        logProxyData_p->is_invalid_auth_info = 0x01;    /* Only first pxauth info will be stored */
                        goto next;
                    }
					/*Added by tk*/
					else if (strcmp(parm_element, PORT) == 0)
					{
						phyProxyData_p = jdd_MemAlloc(sizeof(prov_phy_proxy_data_struct), 1);
						mmi_prov_oma_handle_port_tag(&root_p, &phyProxyData_p);
						prov_proxy_port.connType = phyProxyData_p->connType;
						prov_proxy_port.port = phyProxyData_p->port;
						if (phyProxyData_p != NULL)
						{
							jdd_MemFree(phyProxyData_p);
							phyProxyData_p = NULL;
						}

						goto next;
					}

                }
            }
            mmi_prov_oma_add_pxauth_info(&g_prov_proxy_data_p, logProxyData_p);
            if (logProxyData_p != NULL)
            {
                jdd_MemFree(logProxyData_p);
                logProxyData_p = NULL;
            }
            *nextroot_p = root_p;
            return i_ret;
        }
        else if (strcmp(root_p->name, PARM) == 0)
        {
            if (strcmp(attr_p->name, NAME) == 0)
            {
                UnicodeToAnsii(parm_element, (S8*) attr_p->value);
                if (strcmp(parm_element, NAME_PARM) == 0)
                {
                    attr_p = attr_p->next;
                    if (strcmp(attr_p->name, VALUE) == 0)
                    {
						//added by tk
						if(GetUCS2Flag((S8*)attr_p->value))		
						{
							UnicodeToAnsii((S8*) logProxyData_p->proxy_name, (S8*)GetString(STR_ID_PROF_HDLR_DEFAULT_PROFILE_NAME));
						}
						else
						{
                        len = UCS2Strlen((S8*) attr_p->value);
                        if (len >= PROV_PROFILE_PROFILE_NAME_LEN)
                        {
                            len = PROV_PROFILE_PROFILE_NAME_LEN - 1;
                        }

                        UnicodeNToAnsii((S8*) logProxyData_p->proxy_name, (S8*) attr_p->value, len * ENCODING_LENGTH);
                        logProxyData_p->proxy_name[len] = '\0';
						}
						//end
                    }
                }
                else if (strcmp(parm_element, PROV_DOMAIN) == 0)
                {
                    attr_p = attr_p->next;

⌨️ 快捷键说明

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