本文主要说明QuecPython蜂窝无线网卡特有的一些处理机制,并说明这些机制的基本流程与原理。帮助用户更好的使用QuecPython的蜂窝无线网卡功能。
概述
QuecPython蜂窝无线网卡的处理机制主要包括如下3个部分:
-
开机自动激活蜂窝无线网卡(下文中简称自动激活)。
-
蜂窝无线网卡自动恢复机制(下文中简称自动重连)。
-
蜂窝无线网卡配置参数保存。
下图是QuecPython蜂窝无线网卡开机自动激活的流程。总体而言,可以分为三个阶段:
-
阶段1:根据datacall_config.json文件是否存在,决定开机时使能哪一路或者多路蜂窝无线网卡的自动激活和自动重连功能。
-
阶段2:根据用户是否配置了APN等网卡参数,决定使用什么参数来进行蜂窝移动网卡的激活。
-
阶段3:前面两个阶段主要是参数配置,这个阶段是实际的网卡激活操作。
下面将结合上述流程图来详细介绍QuecPython蜂窝无线网卡的各种处理机制。
开机自动激活蜂窝无线网卡,是指模组在开机后,系统在判断模组网络注册已经成功时,会自动进行蜂窝无线网卡激活的操作。
结合上面的流程图,可以看到,系统会先根据datacall_config.json文件是否存在,决定激活哪一路或者多路蜂窝无线网卡。有如下两种处理机制:
-
datacall_config.json文件不存在:系统会选择激活第一路蜂窝无线网卡。
-
datacall_config.json文件存在:系统会根据该文件中的配置,来决定开机时激活哪一路或者多路蜂窝无线网卡。
系统决定了激活哪些蜂窝无线网卡后,在执行网卡激活操作之前,系统还会进一步确认用户是否为对应的蜂窝无线网卡配置了APN等参数。有如下两种处理机制:
-
用户没有配置APN等参数:如果没有配置,则使用默认参数进行蜂窝无线网卡的激活
-
用户配置了APN等参数:如果用户配置了,则使用用户配置的APN参数进行蜂窝无线网卡的激活。
网卡自动恢复机制
蜂窝无线网卡自动恢复机制,是指模组在激活蜂窝无线网卡后,因为一些异常原因(如网络异常、环境干扰、信号差等)导致模组与网络的连接断开,当异常因素消失,模组在重新注册到网络后,自动重新激活蜂窝无线网卡的行为过程。我们也将这个机制称为蜂窝无线网卡自动重连机制。
结合上面的流程图,可以看到,系统会先根据datacall_config.json文件是否存在,决定使能哪一路或者多路蜂窝无线网卡的自动重连功能。有如下两种处理机制:
-
datacall_config.json文件不存在:系统会选择使能第一路蜂窝无线网卡的自动重连功能。
-
datacall_config.json文件存在:系统会根据该文件中的配置,来决定使能哪一路或者多路蜂窝无线网卡的自动重连功能。
蜂窝无线网卡自动重连机制的基本工作原理如下:
系统会监控设备与无线网络的连接状态,当网络连接断开了,引起网络异常的因素消失后,设备会自动发起附着流程(Attach procedure)重新注册到网络上。一旦注册成功,系统会按照之前的网卡配置参数重新激活网卡。
下面是一些会导致设备网络连接断开的常见情况:
-
设备在一些信号很差的环境中,容易导致设备网络连接断开。比如在隧道中。
-
设备所处的环境,存在同频干扰或者其他干扰,影响设备与基站的正常通信,也会导致设备与网络连接断开。
-
设备接入的小区因为负载过重,即接入该小区的设备过多时,也可能会导致设备与网络连接断开。
-
无线网络发生异常,会导致设备与网络连接断开。
网卡信息保存
在QuecPython中,系统会保存蜂窝无线网卡相关的参数,具体可以分为两个部分:
自动激活和自动重连配置信息保存
通过概述部分的流程图可以看出,系统会根据datacall_config.json文件是否存在,决定开机时使能哪一路或者多路蜂窝无线网卡的自动激活和自动重连功能。这是因为datacall_config.json文件保存了每一路蜂窝无线网卡是否自动激活和自动重连的配置信息。
默认是不存在datacall_config.json文件的,只有用户使用dataCall.setAutoActivate或者dataCall.setAutoConnect方法配置过对应的功能,系统才会在模组的usr目录下创建datacall_config.json文件并保存用户配置信息,该文件不会因为设备断电而丢失。
用户配置的APN等参数保存
用户为每一路蜂窝无线网卡配置的APN等参数,都会被保存到系统的NVM当中,不会因为设备断电而丢失。即使用下面的方法配置的信息会被保存:
dataCall.setPDPContext(profileID, ipType, apn, username, password, authType
checkNet机制
checkNet是QuecPython提供的一个功能模块。该模块主要用于检查网络是否已经就绪。关于该checkNet模块API的使用说明,请参考QuecPython官网API参考手册内checkNet部分。
checkNet使用场景
UE开机后入网流程是一个很复杂的过程,需要终端设备与基站以及核心网进行一系列交互,进行信息确认。这个过程会受很多因素影响,比如终端设备的射频性能(硬件设计、天线等)、周边环境、小区信号覆盖情况、基站负载情况等。因此在设备开机后,用户应用程序开始运行时,蜂窝无线网卡尚未激活成功是很常见也很正常的现象。
如果用户在其应用程序中,一开始就进行网络相关的业务操作,很可能因为蜂窝无线网卡尚未激活的原因而导致用户网络业务失败。因此我们建议用户在进行socket、http/https以及mqtt等网络相关的业务操作之前,先判断网络是否就绪。
checkNet机制说明
checkNet检查网络是否就绪的流程如下图所示。分为3个阶段:
-
阶段1:首先检查SIM卡的状态,确认SIM卡是否已经就绪。如果SIM卡已经就绪,则进入下一个阶段;否则等待SIM卡就绪,直到超时时间到了才返回。
-
阶段2:则开始检查设备的网络注册状态。如果设备已经注网成功,则进入下一个阶段;否则等待设备注网成功,直到超时时间到了才返回。
-
阶段3:开始检查蜂窝无线网卡的激活状态。如果蜂窝无线网卡已经激活成功,则直接返回检查结果;否则等待蜂窝无线网卡激活成功,直到超时时间到了才返回。
网络事件监听
网络事件监听是QuecPython蜂窝无线网卡特有的机制之一,旨在以高效及时的方式通知用户的应用程序,设备网络连接状态发生了变化。用户应用程序可以根据网络状态变化来及时的做出合适的处理。
之所以说这种机制高效及时,是因为QuecPython提供方法让用户应用程序去注册回调函数。当设备与无线网络的连接状态发生变化时,系统就会将对应的事件推送给用户的应用程序。相比于让用户应用程序经常主动的去查询设备网络连接状态,QuecPython这种网络监听机制则更加高效并且及时了。
多路蜂窝无线网卡
多路蜂窝无线网卡指的是模组为了满足用户设备同时接入多个网络的需求,从软件上虚拟出来多张蜂窝无线网卡。
场景
前面我们提到,APN是终端入网时必须配置的一个参数,它决定了终端通过哪种接入方式来访问网络。而不同的接入点所能访问的范围以及接入的方式是不同的,即APN决定了终端设备通过哪种接入方式来访问什么样的网络。那么对于终端设备来说,能否配置多个不同的APN,让终端设备可以同时连接到不同的网络服务呢?答案是肯定可以的。
因此,当用户需要他们的产品能在连接公共网络(Internet)的同时,还需要能接入一些专用网络时,就需要使用到多路蜂窝无线网卡。此时需要给不同的网卡配置不同的APN,并激活这些网卡,即可实现用户需求。
说明
QuecPython各个平台的模组都可以虚拟出多路蜂窝无线网卡,为了平台的统一性,开放给用户使用的网卡有3路,即用户可以同时激活和使用3路网卡,这3路网卡没有其他特殊用途。同时,各个平台的VoLTE功能也会占用一路网卡,具体占用哪一路,各个平台不一样,但是不会占用开放给用户使用的3路网卡。
BG95系列的模组,在NB网络制式下,实际只支持激活最多2路网卡。
具体API详细说明可前往蜂窝网络API说明 - QuecPython查看。



