Beispiel #1
0
cbm_result_error_enum srv_cbm_get_real_acct_id(U32 nw_acct_id, U32 *rel_acct_id, U32 *bearer_type)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint8 app_id;
    cbm_sim_id_enum sim_id;
    kal_uint32 ori_acct_id;
    cbm_result_error_enum cbm_errcode = CBM_OK;
    srv_dtcnt_result_enum da_ret;
    kal_int8 ret;
    cbm_bearer_enum ori_bearer_type = CBM_BEARER_NONE;

	/*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    cbm_decode_data_account_id((kal_uint32)nw_acct_id, &sim_id, &app_id, NULL, &ori_acct_id);

    switch (ori_acct_id)
    {
        case CBM_DEFAULT_ACCT_ID:
            da_ret = srv_dtcnt_get_auto_acc_id(nw_acct_id, &ori_acct_id);
            if (da_ret == SRV_DTCNT_RESULT_SUCCESS &&
                cbm_get_original_account(ori_acct_id) != CBM_DEFAULT_ACCT_ID)
            {
                ori_acct_id = cbm_set_app_id(ori_acct_id, CBM_INVALID_APP_ID);
            }
            else
            {
                ori_acct_id = CBM_INVALID_NWK_ACCT_ID;
                cbm_errcode = CBM_INVALID_ACCT_ID;
            }
            break;

        default:
            break;
    }

    if (cbm_errcode == CBM_OK)
    {
        ret = cbm_get_bearer_type(ori_acct_id, &ori_bearer_type);
        if (ret != CBM_OK ||
            ori_bearer_type == CBM_BEARER_NONE
        #ifndef __MMI_OP01_WIFI__
        #ifdef __MMI_TELEPHONY_SUPPORT__
            || (ori_bearer_type != CBM_BEARER_WIFI &&
                !srv_mode_switch_is_network_service_available())
        #endif /* __MMI_TELEPHONY_SUPPORT__ */
        #endif /* __MMI_OP01_WIFI__ */
            )
        {
            cbm_errcode = CBM_INVALID_ACCT_ID;
        }

    #ifdef __PS_PDP_SWITCH_SUPPORT__
        if (cbm_errcode == CBM_OK)
        {
            srv_cbm_app_cntx_struct *mms_app_p =
                srv_cbm_get_mms_app_slot(SRV_CBM_APP_STATE_MMS_STARTUP);

            if (!mms_app_p)
            {
                mms_app_p = srv_cbm_get_mms_app_slot(SRV_CBM_APP_STATE_MMS_PENDING);
            }

            if (mms_app_p)
            {
                if (sim_id != cbm_get_sim_id(mms_app_p->nw_acct_id))
                {
                    cbm_errcode = CBM_BEARER_FAIL;
                }
            }
        }
    #endif /* __PS_PDP_SWITCH_SUPPORT__ */
    }

    if (rel_acct_id)
    {
        *rel_acct_id = cbm_encode_data_account_id(ori_acct_id, sim_id, app_id, KAL_FALSE);
    }
    if (bearer_type)
    {
        *bearer_type = ori_bearer_type;
    }

    return cbm_errcode;
}
Beispiel #2
0
VMINT vm_preload_download_ex(VMINT hdl, const VMWCHAR * data, VMBOOL bDLA,void (*callback)(VMINT hdl, void * para), void * user_data)
{
    VMCHAR http_header[BUFFER_LEN] = {0};
    VMINT ret = 0;
    VMINT written = 0;
    vm_preload_ctx_t * ctx_p = NULL;
    VMINT bufSize = 0;

    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_2997 );			
    if (NULL == data || 0 > hdl)
    {
        MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3000 );         
        return -2;
    }

    if (vm_res_get_data(VM_RES_TYPE_PRELOAD, 
        hdl, (void**)&ctx_p, &bufSize) != VM_RES_OK)
    {
        MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3058 , -6);           
        return -6;
    }
    
    if (NULL == ctx_p)
    {
        MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3009 );      
        return -3;
    }
    
    
    vm_wstrcpy(ctx_p->path, (const VMWSTR)data);
    ctx_p->cb = callback;
    ctx_p->user_data = user_data;
    ctx_p->bDLA = bDLA;
    if (!bDLA || g_no_dla)
    {
        ret = _vm_preload_try_download(ctx_p);
        if (ret <= 0)
            return ret;
    }
    else
    {
#if defined(MMI_DA_HTTP_DOWNLOAD_SUPPORT)   
        VMUINT account_id;
        srv_da_start_download_struct da_param;
        vm_apn_info_ext info = {0};
        
        memset(&da_param,0,sizeof(da_param));
        vm_get_encoded_dtacct_id(VM_TCP_APN_CMWAP, &account_id);
        MMI_PRINT(MOD_MRE, MMI_MRE_TRC_MOD_VMSOCK,"preload dla dt[0x%x]", 
            account_id);
        if (0 == vm_get_apn_info(&info)) // px
        {
            if (0 == vm_get_default_apn_info(&info))
            {
                if (info.apn_info_id)
                {
                    vm_get_encoded_dtacct_id(VM_TCP_APN_CMWAP, &account_id);
                    MMI_PRINT(MOD_MRE, MMI_MRE_TRC_MOD_VMSOCK,"preload dla px[0x%x]", 
                        account_id);
                }
                else
                {
                    vm_get_encoded_dtacct_id(VM_TCP_APN_CMNET, &account_id);
                    MMI_PRINT(MOD_MRE, MMI_MRE_TRC_MOD_VMSOCK,"preload dla npx[0x%x]", 
                        account_id);
                }
            }
            else // wifi without sim
            {
                
            }
        }
        srv_dtcnt_get_auto_acc_id(account_id, &da_param.acc_id);
        mmi_asc_n_to_ucs2((CHAR *)http_header,ctx_p->url,BUFFER_LEN);
        da_param.url = (WCHAR*)http_header;
        //da_param.acc_id = account_id;
        da_param.show_confirm = MMI_FALSE;
        da_param.user_data = ctx_p;
        da_param.filepath = (U16 *)data;
        da_param.dl_progress = vm_preload_download_callback;
        da_param.dispatch_callback = NULL;
        da_param.setting_hdlr = srv_da_default_setting;// MAUI_03202723 srv_da_bypass_setting -> srv_da_default_setting; //vm_preload_download_setting;
        if (NULL == srv_da_start_http_download(&da_param))
        {
            //_vm_preload_clean(ctx_p);
            _vm_preload_free_ctx(ctx_p);
            return -5;
        }
#endif        
    }
    
    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3058 , ret);			
    ctx_p->update = 2;
    MMI_TRACE(MMI_MRE_TRC_MOD_VMSOCK, TRC_MRE_VMSOCK_3060 );			
    return 0;
}