精华内容
下载资源
问答
  • 全球国家城市json数据

    2019-01-04 17:09:01
    包含了全球国家数据json 2种形式: 一种分类为中国、亚洲、欧洲、北美洲、大洋洲、非洲、南美洲、南极洲(底下包含了所属国家及城市) 另一种为正常的全球国家地区分布
  • CISP-PTE也被称为“国家注册渗透测试工程师”,是国内第一个理论与实践相结合的技能水平注册考试,本课程为CISP-PTE第一阶段课程,知识点100%覆盖官方知识体系!让您无需缴纳高额的培训考试费,也可学习国内最权威的...
  • 计算机应用基础大作业,已按题目要求做好,word与ppt在压缩包里,下载后解压,以下信息需各人填写:更改文件名,填写word封面信息,声明页的手写签名拍照插入
  • 全球所有国家和城市的json,是从QQ的地址中扒下来的,还是比较全的,中国可以精确到市
  • 全球主要国家数据表。mysql专用!适合php。全球主要国家数据表。mysql专用!适合php。
  • 全世界各个主要的国家以及城市对应数据表
  • 中国国家基础地理信息系统(GIS)数据,包括中国省级、县级行政界线、各级河流水系、主要公路铁路、世界行政边界图等矢量数据,可打包下载。该数据集是在国家基础地理信息系统网站改版之前下载获取
  • 总结的最全的全球洲、国家、州/省、城市数据,国家国家代码、电话区号、缩写、中文、英文、拼音。大家可以使用
  • 里面含4169条国家及城市数据,算是较为全面的,我在各大社区各种百度谷歌仅找到这一个适用的,分中英文拼音3版互译,直接拉进数据库执行语句即可,超级好用,但是不得不说,更详细的街道等数据是没有的,这些数据,...
  • 国家-区号的JSON文件 和 国家-省份-城市的JSON文件
  • 国家省市区四级联动

    2016-11-08 11:59:13
    自己在网上找的省市区JSON数据,在这个基础上改成我自己需要的国家+省+市+区四级联动,JS是自己写的,原创,使用非常方便
  • 国家集训队2016论文集
  • 2018最新最全省市区数据表(mysql),包含国家、省份、城市、地区、街道、邮编等
  • ISO国家代码表(excel) 有国家中文名称和拼音码,需启用宏
  • 我们在注册时,可以选择手机号注册,而手机号是有国家或地区码归属的国家代码,区号码,手机区号Json文件。
  • 世界主要国家和城市数据库

    热门讨论 2016-09-05 17:45:15
    世界主要国家和城市数据库 中英文 蛮齐全的
  • 国家基础地理信息系统1:400万数据(1:400 million data in the national fundamental geographic information system),介绍我国地理资源的主要内容,包括国界、省界、河流、铁路等的划分和分布情况,分类很具体,...
  • 这是从腾讯QQ注册的所在地, 所获取出来的数据,如有问题问老马!
  • 包含《计算机软件工程规范国家标准汇编》2007版三卷中所列标准: GBT 11457-2006 信息技术 软件工程术语.pdf GBT 13502-1992 信息处理 程序构造及其表示的约定.pdf GBT 14394-1993 计算机软件可靠性和可维护性管理....
  • 全球国家数据表

    热门讨论 2013-03-08 11:09:24
    全球国家数据表结构与数据,mysql数据,包含国家的英文与中文名称
  • 世界国家geojson大全,各国地图json数据下载
  • 自己刚整理的,就不要资源分了,希望能帮到各位 本资源含MySQL数据库的.sql备份和ACCESS数据库.mdb文件,ASP、PHP网站都可以使用
  • GAT 708-2007 信息安全技术 信息系统安全等级保护体系框架 GB 17859-1999 计算机信息系统 安全等级保护划分准则 GBT 20269-2006 信息安全技术 信息系统安全管理要求 GBT 20271-2006 信息安全技术 信息系统通用安全...
  • java根据ip获取国家、地区名称,附带ip库
  • 高通Android7.1 WIFI国家码问题

    千次阅读 2019-05-25 11:53:25
    设置中的国家码优先级大于属性中的国家码。 mCountryCode传递给WifiStateMachine中。WifiStateMachine在wpa_supplicant启动起来后,取设置国家码。 public WifiStateMachine(Context context, FrameworkFacade ...
    20:12:08.774420  [20:12:03.149290] [000000002A1ADFB1] [wpa_s] wlan: [I :HDD] hdd_driver_command: Received COUNTRY CN cmd from Wi-Fi GUI***
    20:12:08.774457  [20:12:03.149318] [000000002A1AE1BC] [wpa_s] wlan: [I :SME] sme_ChangeCountryCode: 5688:  called
    20:12:08.774490  [20:12:03.149334] [000000002A1AE2FD] [wpa_s] wlan: [I :SME] sme_ChangeCountryCode: 5728:  returned
    20:12:08.774520  [20:12:03.149476] [000000002A1AEDA0] [VosMC] wlan: [IH:VOS] vos_timer_stop: Timer Addr inside voss_stop : 0xbf3733d4
    20:12:08.774550  [20:12:03.149494] [000000002A1AEF01] [VosMC] wlan: [I :WDA] <------ WDA_UpdateChReqCallback 
    20:12:08.774580  [20:12:03.149564] [000000002A1AF43B] [VosMC] wlan: [I :WDA] <------ WDA_UpdateScanParamsReqCallback, wdiStatus: 0
    20:12:08.774609  [20:12:03.149574] [000000002A1AF4F8] [VosMC] wlan: [IH:VOS] Timer Addr inside voss_start : 0xbf3733d4 
    20:12:08.774639  [20:12:03.149598] [000000002A1AF6C1] [VosMC] wlan: [I :VOS] VosMCThread: Servicing the VOS SME MC Message queue
    20:12:08.774668  [20:12:03.149616] [000000002A1AF819] [VosMC] wlan: [I :VOS] regdomain request
    20:12:08.774943  [20:12:03.149624] [000000002A1AF8AB] [VosMC] wlan: [W :VOS]  get country information from kernel db
    20:12:08.774984  [20:12:03.443815] [000000002A71293C] [VosMC] wlan: [I :VOS] runtime country code : CN is found in kernel db
    20:12:08.775014  [20:12:03.443894] [000000002A712F06] [wpa_s] wlan: [I :HDD] Exit:hdd_driver_command
    20:12:08.775045  [20:12:03.443903] [000000002A712FA2] [VosMC] wlan: [IH:VOS] vos_timer_stop: Timer Addr inside voss_stop : 0xbf3733d4
    20:12:08.775075  [20:12:03.443907] [000000002A712FE7] [wpa_s] wlan: [I :HDD] Exit:__hdd_ioctl
    20:12:08.775106  [20:12:03.443920] [000000002A7130E9] [VosMC] wlan: [I :WDA] <------ WDA_UpdateScanParamsRespCallback 
    20:12:08.775136  [20:12:03.443937] [000000002A71322C] [VosMC] wlan: [IH:VOS] vos_list_remove_front: list empty
    20:12:08.775165  [20:12:03.444199] [000000002A7145E2] [kwork] wlan: [I :VOS] cfg80211 reg notifier callback for country for initiator 1
    20:12:08.775195  [20:12:03.444211] [000000002A7146B3] [kwork] wlan: [I :VOS] __wlan_hdd_linux_reg_notifier: Req initiator 1 CC=CN
    

    不同国家,WIFI使用的信道是不同的,2.4G一共有14个信道,中国使用1-13信道,美国则使用1-11信道。因此,我们需要指定WIFI的国家码,来确定WIFI在扫描和连接过程中,可以在哪些信道上进行。

    设置国家码有三种方法,我们逐一介绍:

    1.通过设置prop设置

    oem产商设置国家码在

    device/qcom/msm8909w/system.prop
    

    文件中设置一个prop就可以了。

    ro.boot.wificountrycode=CN
    

    设置好prop后,我们分析下国家码的设置过程。

    在SystemServer起来后,会加载WifiServiceImpl,即WIFI服务。在WIFI服务中,将获取设置的WIFI国家码属性。并作为参数传给WifiStateMachine的构造函数中。

    public WifiServiceImpl(Context context) {
        mCountryCode = new WifiCountryCode(
                WifiNative.getWlanNativeInterface(),
                SystemProperties.get(BOOT_DEFAULT_WIFI_COUNTRY_CODE),
                mFacade.getStringSetting(mContext, Settings.Global.WIFI_COUNTRY_CODE),
                mContext.getResources().getBoolean(
                        R.bool.config_wifi_revert_country_code_on_cellular_loss));
        mWifiStateMachine = new WifiStateMachine(mContext, mFacade,
            wifiStateMachineThread.getLooper(), mUserManager, mWifiInjector,
            new BackupManagerProxy(), mCountryCode);
    }
    

    此处首先构造了WifiCountryCode对象,我们看构造方法:

        public WifiCountryCode(
                WifiNative wifiNative,
                String oemDefaultCountryCode,
                String persistentCountryCode,
                boolean revertCountryCodeOnCellularLoss) {
    
            mWifiNative = wifiNative;
            mRevertCountryCodeOnCellularLoss = revertCountryCodeOnCellularLoss;
    
            if (!TextUtils.isEmpty(persistentCountryCode)) {
                mDefaultCountryCode = persistentCountryCode.toUpperCase();
            } else if (!TextUtils.isEmpty(oemDefaultCountryCode)) {
                mDefaultCountryCode = oemDefaultCountryCode.toUpperCase();
            } else {
                if (mRevertCountryCodeOnCellularLoss) {
                    Log.w(TAG, "config_wifi_revert_country_code_on_cellular_loss is set, "
                             + "but there is no default country code.");
                    mRevertCountryCodeOnCellularLoss = false;
                    return;
                }
            }
    
            if (mRevertCountryCodeOnCellularLoss) {
                Log.d(TAG, "Country code will be reverted to " + mDefaultCountryCode
                        + " on MCC loss");
            }
        }
    

    oemDefaultCountryCode就是我们从属性设置的国家码。另外还有一个persistentCountryCode,这个是从设置中获取的国家码。从构造方法可以看到,从设置文件中取到的国家码如果存在,直接将其赋值给mDefaultCountryCode,否则将oemDefaultCountryCode赋值给mDefaultCountryCode。设置中的国家码优先级大于属性中的国家码。

    mCountryCode传递给WifiStateMachine中。WifiStateMachine在wpa_supplicant启动起来后,取设置国家码。

        public WifiStateMachine(Context context, FrameworkFacade facade, Looper looper, UserManager userManager, WifiInjector wifiInjector,
    BackupManagerProxy backupManagerProxy,
    WifiCountryCode countryCode) {
        mCountryCode = countryCode;
    }
    
    class SupplicantStartedState extends State {
        @Override
        public void enter() {
            /* Wifi is available as long as we have a connection to supplicant */
            mNetworkInfo.setIsAvailable(true);
            if (mNetworkAgent != null) mNetworkAgent.sendNetworkInfo(mNetworkInfo);
    
            int defaultInterval = mContext.getResources().getInteger(
                    R.integer.config_wifi_supplicant_scan_interval);
    
            mCountryCode.setReadyForChange(true);
        }
    

    此处mCountryCode.setReadyForChange()方法就是用来设置国家码的。我们大致看起实现方法:

    public synchronized void setReadyForChange(boolean ready) {
            if (DBG) Log.d(TAG, "Set ready: " + ready);
            mReady = ready;
            // We are ready to set country code now.
            // We need to post pending country code request.
            if (mReady) {
                updateCountryCode();
            }
        }
        
    private void updateCountryCode() {
        String country = pickCountryCode();
        if (country != null) {
                setCountryCodeNative(country);
        }
    }
    
        private String pickCountryCode() {
            if (mTelephonyCountryCode != null) {
                return mTelephonyCountryCode;
            }
            if (mDefaultCountryCode != null) {
                return mDefaultCountryCode;
            }
            // If there is no candidate country code we will return null.
            return null;
        }
    

    在pickCountryCode中我们首先选择使用那个CountryCode,如果mTelephonyCountryCode有设置,就使用mTelephonyCountryCode对应的code。mTelephonyCountryCode在检测电话卡后,通过WifiManager设置进来的。不插卡时,mTelephonyCountryCode为null。如果不插卡,mTelephonyCountryCode不会被pick到,则会返回mDefaultCountryCode。mDefaultCountryCode在WifiCountryCode构造是传入的。mDefaultCountryCode被设置成设置值或者属性值。我们假设没有设置值,只有OEM的属性值。则此处pick到我们属性中设置的属性值。

    在pick到国家码后,使用setCountryCodeNative进行设置。否则不做任何设置,不做设置是不插卡不在设置中设置国家码也没有属性的情况。属于第三种情况。

        public boolean setCountryCode(String countryCode) {
            if (countryCode != null)
                return doBooleanCommand("DRIVER COUNTRY " + countryCode.toUpperCase(Locale.ROOT));
            else
                return doBooleanCommand("DRIVER COUNTRY");
        }
    

    "DRIVER COUNTRY"通过JNI传递给wpa_supplicant处理。

    else if (os_strncmp(buf, "DRIVER ", 7) == 0) {
    		reply_len = wpa_supplicant_driver_cmd(wpa_s, buf + 7, reply,
    						      reply_size);
    						      
    const struct wpa_driver_ops wpa_driver_nl80211_ops = {
        .driver_cmd = wpa_driver_nl80211_driver_cmd,
    }
    
    int wpa_driver_nl80211_driver_cmd(void *priv, char *cmd, char *buf,
    				  size_t buf_len )
    {
        if ((ret = ioctl(drv->global->ioctl_sock, SIOCDEVPRIVATE + 1, &ifr)) < 0) {
    			wpa_printf(MSG_ERROR, "%s: failed to issue private commands\n", __func__);
    		}
    }
    

    通过ioctl发送指令给驱动程序。驱动程序在对应ioctl中接收。

    static struct net_device_ops wlan_drv_ops = {
        .ndo_open = hdd_open,
        .ndo_do_ioctl = hdd_ioctl,
    }
    
    int __hdd_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
    {
        switch (cmd) {
       case (SIOCDEVPRIVATE + 1):
          if (is_compat_task())
             ret = hdd_driver_compat_ioctl(pAdapter, ifr);
          else
             ret = hdd_driver_ioctl(pAdapter, ifr);
          break;
    }
    
    static int hdd_driver_command(hdd_adapter_t *pAdapter,
                                  hdd_priv_data_t *ppriv_data)
    {
        else if ( strncasecmp(command, "COUNTRY", 7) == 0 )
       {
           char *country_code;
    
           country_code = command + 8;
    
           INIT_COMPLETION(pAdapter->change_country_code);
           hdd_checkandupdate_dfssetting(pAdapter, country_code);
    #ifndef CONFIG_ENABLE_LINUX_REG
           hdd_checkandupdate_phymode(pAdapter, country_code);
    #endif
           ret = (int)sme_ChangeCountryCode(pHddCtx->hHal,
                  (void *)(tSmeChangeCountryCallback)
                    wlan_hdd_change_country_code_callback,
                     country_code, pAdapter, pHddCtx->pvosContext, eSIR_TRUE, eSIR_TRUE);
           if (eHAL_STATUS_SUCCESS == ret)
           {
               ret = wait_for_completion_interruptible_timeout(
                       &pAdapter->change_country_code,
                            msecs_to_jiffies(WLAN_WAIT_TIME_COUNTRY));
               if (0 >= ret)
               {
                   hddLog(VOS_TRACE_LEVEL_ERROR, "%s: SME while setting country code timed out %d",
                   __func__, ret);
               }
           }
           else
           {
               VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_FATAL,
                 "%s: SME Change Country code fail ret=%d", __func__, ret);
               ret = -EINVAL;
           }
    
       }
    }
    

    sme_ChangeCountryCode函数将构造一个消息,消息中包括国家码信息,消息的队列ID,消息类型等内容,然后 将消息发送到VOSS中进一步处理。这正是高通驱动的消息基本处理方式。

    @/device/qcom/common/opensource/wlan/prima/CORE/SME/src/sme_common/sme_Api.c
    eHalStatus sme_ChangeCountryCode( tHalHandle hHal,
                                      tSmeChangeCountryCallback callback,
                                      tANI_U8 *pCountry,
                                      void *pContext,
                                      void* pVosContext,
                                      tAniBool countryFromUserSpace,
                                      tAniBool sendRegHint )
    {
        vos_msg_t                 msg;
        tAniChangeCountryCodeReq *pMsg;
        
        5709      pMsg->msgType = pal_cpu_to_be16((tANI_U16)eWNI_SME_CHANGE_COUNTRY_CODE);
        
        pMsg = vos_mem_malloc(sizeof(tAniChangeCountryCodeReq));
          pMsg->msgLen = (tANI_U16)sizeof(tAniChangeCountryCodeReq);
          vos_mem_copy(pMsg->countryCode, pCountry, 3);
          pMsg->countryFromUserSpace = countryFromUserSpace;
          pMsg->sendRegHint = sendRegHint;
          pMsg->changeCCCallback = callback;
          pMsg->pDevContext = pContext;
          pMsg->pVosContext = pVosContext;
    
          msg.type = eWNI_SME_CHANGE_COUNTRY_CODE;
          msg.bodyptr = pMsg;
          msg.reserved = 0;
          
          if(VOS_STATUS_SUCCESS != vos_mq_post_message(VOS_MQ_ID_SME, &msg))
          return (status);
    }
    
    VOS_STATUS vos_mq_post_message( VOS_MQ_ID msgQueueId, vos_msg_t *pMsg )
    {
        switch (msgQueueId)
        {
            case  VOS_MQ_ID_SME:
        {
           pTargetMq = &(gpVosContext->vosSched.smeMcMq);
           break;
        }
        }
        pMsgWrapper = vos_mq_get(&gpVosContext->freeVosMq);
        /*
      ** Copy the message now
      */
      vos_mem_copy( (v_VOID_t*)pMsgWrapper->pVosMsg,
                    (v_VOID_t*)pMsg, sizeof(vos_msg_t));
    
      vos_mq_put(pTargetMq, pMsgWrapper);
    
      set_bit(MC_POST_EVENT, &gpVosContext->vosSched.mcEventFlag);
      wake_up_interruptible(&gpVosContext->vosSched.mcWaitQueue);
    }
    

    将消息拷贝到MsgWrapper->pVosMsg中,然后唤醒vosSched.mcWaitQueue。我们直接进入mcWaitQueue这个等待队列看唤醒后的操作。

    eHalStatus sme_ProcessMsg(tHalHandle hHal, vos_msg_t* pMsg)
    {
        case eWNI_SME_CHANGE_COUNTRY_CODE:
                  if(pMsg->bodyptr)
                    {
                       status = sme_HandleChangeCountryCode((void *)pMac, pMsg->bodyptr);
                       vos_mem_free(pMsg->bodyptr);
                    }
        break;
    }
    
    eHalStatus sme_HandleChangeCountryCode(tpAniSirGlobal pMac,  void *pMsgBuf)
    {
        v_REGDOMAIN_t domainIdIoctl;
        static uNvTables nvTables;
        pMsg = (tAniChangeCountryCodeReq *)pMsgBuf;
          
        /* Set Current Country code and Current Regulatory domain */
        status = csrSetCountryCode(pMac, pMsg->countryCode, NULL);
        /* overwrite the defualt country code */
       vos_mem_copy(pMac->scan.countryCodeDefault,
                    pMac->scan.countryCodeCurrent,
                    WNI_CFG_COUNTRY_CODE_LEN);
         /* Get Domain ID from country code */
       status = csrGetRegulatoryDomainForCountry(pMac,
                       pMac->scan.countryCodeCurrent,
                       (v_REGDOMAIN_t *) &domainIdIoctl,
                       COUNTRY_QUERY);
                       
        status = WDA_SetRegDomain(pMac, domainIdIoctl, pMsg->sendRegHint);
        /* get the channels based on new cc */
       status = csrInitGetChannels( pMac );
        /* reset info based on new cc, and we are done */
       csrResetCountryInformation(pMac, eANI_BOOLEAN_TRUE, eANI_BOOLEAN_TRUE);
    }
    

    sme_HandleChangeCountryCode设置好国家码,并通过国家码重新设置scan的信道。文章开始的log就是这里打印处理的。

    2.通过WifiManager提供的结构设置

    在安装上电话卡,Android设备可以从电话卡找到位置信息。然后会自动设置国家码。

    private static void setWifiCountryCodeFromMcc(Context context, int mcc) {
            String country = MccTable.countryCodeForMcc(mcc);
            Slog.d(LOG_TAG, "WIFI_COUNTRY_CODE set to " + country);
            WifiManager wM = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            wM.setCountryCode(country, false);
        }
    

    这里通过WifiManager来设置国家码。参数中除了国家码外,还有一个是否固化国家码的boolean类型参数。固化为ture,我们就会把国家码写入到设置中固化下来,以后优先使用该国家码。我们这里不会固化。

        public void setCountryCode(String countryCode, boolean persist) {
            Slog.i(TAG, "WifiService trying to set country code to " + countryCode +
                    " with persist set to " + persist);
            enforceConnectivityInternalPermission();
            final long token = Binder.clearCallingIdentity();
            try {
                if (mCountryCode.setCountryCode(countryCode, persist) && persist) {
                    // Save this country code to persistent storage
                    mFacade.setStringSetting(mContext,
                            Settings.Global.WIFI_COUNTRY_CODE,
                            countryCode);
                }
            } finally {
                Binder.restoreCallingIdentity(token);
            }
        }
    

    这里的countryCode将被吸入到mTelephonyCountryCode。前面已经提过,TelephonyCountryCode优先级高于mDefaultCountryCode。

        public synchronized boolean setCountryCode(String countryCode, boolean persist) {
            if (DBG) Log.d(TAG, "Receive set country code request: " + countryCode);
            // Ignore empty country code.
            if (TextUtils.isEmpty(countryCode)) {
                if (DBG) Log.d(TAG, "Ignore empty country code");
                return false;
            }
            if (persist) {
                mDefaultCountryCode = countryCode;
            }
            mTelephonyCountryCode = countryCode.toUpperCase();
            // If wpa_supplicant is ready we set the country code now, otherwise it will be
            // set once wpa_supplicant is ready.
            if (mReady) {
                updateCountryCode();
            }
            return true;
        }
    

    剩下的内容updateCountryCode和1中设置方法相同了。

    3.从扫描结果过去国家码

    如果Android设备没有设置国家码prop,也没有插卡,则开机后设备是没有国家码的,这个时候将从扫描的WIFI结果中,寻找国家信息,自动设定一个国家码。这样设置可能会有误。

    驱动中打印的log如下:

    17:32:05.033088  [17:32:04.731383] [000000007E40829B] [VosMC] wlan: [I :SME]  Scan received 3 unique BSS scan reason is 9
    17:32:05.033129  [17:32:04.731430] [000000007E408625] [VosMC] wlan: [W :SME] csrMoveTempScanResultsToMainList: 3250: 11d AP Bssid 00:35:1a:db:f7:02 chan= 8, rssi = -63, countryCode CN
    17:32:05.033171  [17:32:04.731474] [000000007E408978] [VosMC] wlan: [W :SME] csrMoveTempScanResultsToMainList: 3250: 11d AP Bssid 00:35:1a:db:f7:00 chan= 8, rssi = -63, countryCode CN
    17:32:05.033211  [17:32:04.731510] [000000007E408C1A] [VosMC] wlan: [I :SME] Selected Country is CN With count 2
    17:32:05.033283  [17:32:04.731521] [000000007E408CEE] [VosMC] wlan: [I :VOS] regdomain request
    17:32:05.033323  [17:32:04.731528] [000000007E408D7F] [VosMC] wlan: [W :VOS]  get country information from kernel db
    17:32:05.033363  [17:32:04.731776] [000000007E40A023] [kwork] wlan: [I :VOS] cfg80211 reg notifier callback for country for initiator 1
    17:32:05.033403  [17:32:04.731788] [000000007E40A101] [kwork] wlan: [I :VOS] __wlan_hdd_linux_reg_notifier: Req initiator 1 CC=CN
    17:32:05.033443  [17:32:05.022912] [000000007E95EB75] [VosMC] wlan: [I :VOS] runtime country code : CN is found in kernel db
    

    基本调用流程就是从扫描结果中选取一个国家码,如果扫描结果中只有一个国家码,就设置这个国家码,如果有多个,就随机选择一个。

    csrScanComplete
        csrSaveScanResults
            csrMoveTempScanResultsToMainList
                csrElectedCountryInfo(pMac);
                csrLearnCountryInformation( pMac, NULL, NULL, eANI_BOOLEAN_TRUE );
    

    在csrElectedCountryInfo中选择国家码,在csrLearnCountryInformation设置国家码。

    tANI_BOOLEAN csrLearnCountryInformation( tpAniSirGlobal pMac, tSirBssDescription *pSirBssDesc,tDot11fBeaconIEs *pIes, tANI_BOOLEAN fForce)
    {
        if (eANI_BOOLEAN_FALSE == useVoting)
                pCountryCodeSelected = pIesLocal->Country.country;
            else
                pCountryCodeSelected = pMac->scan.countryCodeElected;
                
        status = csrGetRegulatoryDomainForCountry(pMac,
                           pCountryCodeSelected, &domainId, COUNTRY_IE);
        /* updating 11d Country Code with Country code selected. */
        vos_mem_copy(pMac->scan.countryCode11d,
                                 pCountryCodeSelected,
                                 WNI_CFG_COUNTRY_CODE_LEN);
        
    }
    

    在__wlan_hdd_linux_reg_notifier()方法中设置通过从scan结果选择的国家码。

    通常为了保证能够正确指定扫描的信道,需要OEM产商在porp中设置国家码,防止出现国家码设置异常,扫描不到某些热点的情况。

    展开全文
  • 世界的国家,洲(省份),城市中文对照表,绝对全,可以参考下
  • php 根据ip地址判断是那个国家

    热门讨论 2013-01-23 10:51:56
    利用php 根据ip地址 来判断用户来自那个国家 城市 城市归属地信息
  • 国家基础地理信息系统数据

    热门讨论 2013-04-22 00:12:11
    国家基础地理信息系统数据,适合gis学习使用。
  • 国家网络应急中心 2013年面试题 事业编制
  • 天津(西青)车联网先导区 2020年6月,天津(西青)国家级车联网先导区揭牌,这是全国第二个国家级车联网先导区。 来源:天津新闻 天津(西青)国家级车联网先导区正加速建设。目前已经实现了CFAE(音)团体标准16个...

    车联网先导区建设,正进入一个蒸蒸日上的新阶段。

    “先导”有两方面的含义:

    • 一是除了技术试验,还需重视创建模式、运营、管理、政策、法规、标准等方面的创新与成熟;

    • 二是要形成一定的生态和规模,而不只是单一的技术验证,要面向商业化应用,验证整个系统是否成熟。

    目前,共有7个国家级/省级车联网先导区。包含江苏(无锡)、天津(西青)、湖南(长沙)等国家级车联网先导区,江苏省苏州市和南京市2个省级车联网先导区。一起来看看吧!

    国家级车联网先导区

    江苏(无锡)车联网先导区

    2019年9月,全国首个车联网先导区——江苏(无锡)车联网先导区正式揭牌.

    这是全球第一个城市级应用示范项目,也是我国设立的首个车联网先导区

    有关数据显示,无锡自获批全国首个国家级车联网先导区以来,已吸引斯润天朗为代表的80余家车联网(智能网联汽车)企业落户,今年将累计完成全市600个路口基础设施改造升级,覆盖350余平方公里。

    无锡车联网先导区的主要目标和任务

    实现规模部署C-V2X网络、路侧单元,装配一定规模的车载终端,完成重点区域交通设施车联网功能改造和核心系统能力提升,丰富车联网应用场景。

    此外,与车联网密切相关的政府部门间的协调机制也将得到完善,包括明确车联网运营主体和职责,建立车联网测试验证、安全管理、通信认证鉴权体系和信息开放、互联互通的云端服务平台。先导区将实现规划应用效果。

    天津(西青)车联网先导区

    2020年6月,天津(西青)国家级车联网先导区揭牌,这是全国第二个国家级车联网先导区

    来源:天津新闻

    天津(西青)国家级车联网先导区正加速建设。目前已经实现了CFAE(音)团体标准16个场景,从接入层、网络层到信息层的互联互通认证,牵头制定了6个车路协同场景的互通协议。

    下一步,车联网先导区将在基础设施、数据服务、标准支撑和应用推广等方面加大建设力度,于2024年实现西青全域车联网先导应用环境全覆盖.

    将天津打造成为全国车联网重点产业集聚区、关键技术研发创新区、国际标准制定引领区、落地应用示范区,辐射京津冀、渤海湾乃至全国,带动国内车联网新型产业生态的蓬勃发展。

    天津(西青)车联网先导区的主要目标和任务

    发挥在标准机构、测试环境等方面的优势,积极探索跨行业标准化工作新模式,加快行业关键急需标准制定和验证,加强测试评价体系建设,促进行业管理制度和规范的完善。

    规模部署蜂窝车联网C-V2X网络,完成重点区域交通设施车联网功能改造和核心系统能力提升,明确车联网通信终端安装方案,建立车联网安全管理、通信认证鉴权体系和信息开放、互联互通的云端服务平台。

    明确车联网运营主体和职责,探索丰富车联网应用场景,构建开放融合、创新发展的产业生态,形成可复制、可推广的经验做法。

    湖南(长沙)车联网先导区

    2020年11月,湖南(长沙)国家级车联网先导区正式揭牌,这是全国第三个国家级车联网先导区

    湖南湘江新区车联网(智能网联汽车)产业实现了跨越发展,2018年底国家智能网联汽车(长沙)测试区正式获工信部授牌,智慧公交示范线、5G融合V2X应用示范、智能网联生态企业导入等工作取得突破进展,车联网产业的区域影响力、产业服务能力不断提升。

    下一步,新区将进一步完善车联网场景类型,构建“车路云网图”的全场景体系;探索商业化运用模式,完善车联网服务功能;并将深入开展标准和法规建设,制定出台车联网专项扶持计划。

    湖南(长沙)车联网先导区的主要目标和任务

    在重点高速公路、城市道路规模部署蜂窝车联网C-V2X网络,结合5G和智慧城市建设,完成重点区域交通设施车联网功能改造和核心系统能力提升,带动全路网规模部署。

    构建丰富的场景创新环境,有效发展车载终端用户,推动公交、出租等公共服务车辆率先安装使用,促进创新技术和产品应用。

    深化政策和制度创新,探索新型业务运营模式,完善安全管理、认证鉴权体系,建设信息开放、互联互通的云端服务平台,构建开放融合、创新发展的产业生态,形成可复制、可推广的经验做法。

    重庆(两江新区)车联网先导区

    2021年1月8日,据悉重庆(两江新区)获得工信部批准创建国家级车联网先导区,这是全国第四个、西部第一个国家级车联网先导区

    来源:重庆电视台

    两江新区目前已建成近百公里城市示范道路(含智能网联测试道路)和i-VISTA智能汽车集成试验区、空港工业园区智慧物流5G自动驾驶一期等项目,建有礼嘉智慧公园、两江协同创新区等先导示范区域。

    两江协同创新区车联网汽车示范区项目按照统一规划、同步建设、同步运营的原则,已与CIDI新驱动合作完成了约4公里示范线建设,建设了生态完善、功能适配的“车-路-云”产品和技术互联互通需求的示范场景。

    打造了车路协同、智能城市管家、城市巡逻安防、远程驾驶等6大场景,实现车路协同超视距感知、主动式公交优先、5G远程驾驶、自动驾驶等29大功能演示。

    同时,满足了基于车路协同高级别辅助驾驶商用示范、推广以及自动驾驶车辆测试运营等需求。

    重庆(两江新区)车联网先导区的主要目标和任务

    在重点高速公路、城市道路规模部署蜂窝车联网C-V2X网络,做好与5G和智慧城市发展的统筹衔接,完成重点区域交通设施车联网功能改造和核心系统能力提升,带动全路网规模部署。

    结合产业基础和复杂道路交通特征,加强技术创新和产品研发,构建丰富实用的车联网应用场景,有效发展车载终端用户,带动产业转型升级和高质量发展。

    深化政策和制度创新,建立健康可持续的建设和运营模式,打造信息开放、互联互通的云端服务平台,完善安全管理体系,形成可复制、可推广的经验做法。

    长三角区域车联网先导区

    2020年9月14日,在上海嘉定举行的2020世界智能网联汽车大会上,长三角三省一市的相关部门签署合作协议,共同建设国家级长三角区域车联网先导区

    国家级长三角区域车联网先导区发展标准体系,将涵盖统一的智能信号灯、5G通信基站,开发长三角区域标准统一的智能网联汽车高精度地图,统一车联网通信协议、道路交通管理平台和车路协同网络安全防护。

    国家级长三角区域车联网先导区新型基础设施建设,涉及在高速公路和城市快速路上构建集感知、通信、计算、信息安全等能力为一体的智能道路环境,基于5G的车路协同车联网大规模验证与应用,G2沪宁、G60沪昆、杭绍甬等智慧高速公路“新基建”的联动等创新课题。

    在先导区,三省一市还将探索私人、公交、共享、租赁、物流、环卫等领域的智能网联汽车发展模式,引领全国智能网联汽车商业化发展。

    省级车联网先导区

    江苏省苏州市

    2019年10月,江苏省车联网先导区于苏州市正式揭牌,这也意味着苏州将以常熟市、相城区、工业园区为主体,创建首个省级车联网先导区

    来源汽车之家

    先导区将聚焦智能网联汽车、车联网通信技术等重点领域和环节,实施一批研发项目,并引进和培育智能网联汽车相关企业,形成完善的产业链条。

    其中,相城区重点培育新兴研发型企业,加快车联网前沿技术突破和模式创新,推进城市公交、出租、物流、环卫等多场景示范应用。

    相城区智能网联汽车公共测试道路总长8.4公里,共有13个交叉路口,具备长直道、弯曲路、交通枢纽道路等真实城市测试车道环境。道路测试区域内实现5G全覆盖,可以实现复杂环境下的智能网联汽车测试。

    南京市

    2020年12月21日,2020南京市省级车联网先导区落成暨自动驾驶首发仪式在南京白下高新技术产业开发区举行。

    这标志着南京第一家省级车联网先导区正式落成,南京第一个L4级别自动驾驶开放测试场地正式启用。当天,还颁发了南京首批5张自动驾驶测试牌照。

    首发上路测试车辆为百度APOLLO-ROBOTAXI  

    来源:现代快报

    南京市省级车联网先导区东至运粮河、西至双麒路、南至紫云大道、北至光华路,占地面积约1.62平方公里,覆盖15条道路、30个路口,总计10.67公里的城市公共道路。

    其中,包含:

    • 一套基础,即车路协同基础路测系统;

    • 一个应用平台,即车路协同云控平台;

    • 三项支撑体系,即高精度地图、差分定位、数据中心三项支撑;

    • 四类服务,即为高级别自动驾驶车辆、网联辅助驾驶车辆、普通车联网用户及交通管理部门提供的40多项车路协同功能场景服务。

    各车联网先导区分工不同

    从工信部对已经授牌的三个国家级车联网先导区建设提出的主要任务和目标,可以看出各地有不同的分工。目标和任务的不同,则是由每个先导区的“先天条件”和“产业特色”所决定的

    • 无锡是工信部、公安部和江苏省共建的国家智能交通综合测试基地,有全球首个城市级车联网(LTE-V2X)应用项目;

    • 天津很早就成立了智能网联汽车质量监督检验中心,在共性技术研发、标准制修订、测试验证服务等方面具有优势

    • 长沙出台了“头羊计划”“火炬计划”及“‘新基建’三年行动计划”,大力推动景区、园区、港口等城市道路和公交车、校车、环卫车、渣土车等重点车辆的车联网改造。

    • .........

    由此可见,工信部在批复成立国家级车联网先导区方面,更加重视当地车联网产业的实力和发展特色

    车联网政策的推动

    2018-2020年车联网产业相关政策梳理:

    小结

    技术发展和政策的颁布都在助力车联网先导区建设向前一步。

    建设国家级车联网先导区对实现“人-车-路-云”高度协同,形成深度融合、创新活跃、安全可信、竞争力强的车联网产业新生态具有重要意义。

    车联网是5G应用主要场景之一。相信借助5G的发展,能够更好地拓展应用场景,加速商业落地,推动车联网商用项目应用。

    延伸阅读:

    车联网各领域头部企业排行榜!

    工信部前部长苗圩:5G应用场景约80%是To B,车联网或是最大应用(附关键数据)

    编辑:陈静岚

    审核:李子

    投稿、新闻热线:13662444857(微信同号)

    我叫“5G产业圈”

    长按扫码关注

    最新5G资讯都在这里!

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 733,921
精华内容 293,568
关键字:

国家