配置网络信息
本文档介绍了网络信息相关的函数接口,并通过demo_nw.c进行测试演示。
注:详细参数请参考yopen_nw.h
网络信息查询
网络选择查询
yopen_nw_get_selection(uint8_t nSim, yopen_nw_seclection_info_s *select_info)
功能 : 获取选择的运营商信息,需要等待注网成功
参数 :
参数 | 定义 | 结构体成员 | 解释 |
---|---|---|---|
yopen_nw_seclection_info_s |
nw_selection_mode |
运营商选择方式 0 Modem自动选择,MCC和MNC无效。 1 手动选择 |
|
mcc[YOPEN_NW_MCC_MAX_LEN+1] |
移动设备国家代码 | ||
mnc[YOPEN_NW_MNC_MAX_LEN+1] |
移动设备网络代码 | ||
act |
注网制式,详情参考yopen_nw.h |
示例 :
执行代码:
yopen_nw_seclection_info_s select_info = {0};// 初始化用于存储网络选择信息的结构体变量
yopen_nw_get_selection(0, &select_info);// 调用函数获取网络选择信息,传入SIM卡槽编号和结构体指针
DEMO_NW_TRACE("yopen_nw_get_selection mcc %s, mnc %s", select_info.mcc, select_info.mnc);// 打印查询到的信息
打印结果:
yopen_nw_get_selection mcc 460, mnc 00//查询到的移动设备国家代码为460,移动设备网络代码为00
网络注册状态查询
yopen_nw_get_reg_status(uint8_t nSim, yopen_nw_reg_status_info_s *reg_info)
功能 :获取当前网络注册信息。
参数 :
参数 | 定义 | 结构体成员 | 解释 |
---|---|---|---|
yopen_nw_reg_status_info_s |
注网状态信息结构体 | state |
注网状态 |
lac |
位置区码 | ||
cid |
小区全球识别码 | ||
act |
注网制式,详情参考yopen_nw.h |
示例 :
执行代码:
yopen_nw_reg_status_info_s reg_info = {0};// 初始化用于存储网络注册状态信息的结构体变量
yopen_nw_get_reg_status(0, ®_info);// 调用函数获取网络注册状态,传入SIM卡槽编号和结构体指针
DEMO_NW_TRACE("data: state:%d, lac:0x%X, cid:0x%X, act:%d", reg_info.data_reg.state, reg_info.data_reg.lac, reg_info.data_reg.cid, reg_info.data_reg.act);//打印查询到的信息
打印结果:
state:1, lac:0x550B, cid:0x45924CA, act:7//位置区码为0x550B,小区全球识别码为0x45924CA,4G网络
网络频段查询
查询当前工作频段请参考下文物理层状态信息查询或小区信息查询中的参数band
运营商信息查询
yopen_nw_get_operator_name(uint8_t nSim, yopen_nw_operator_info_s *oper_info)
功能 :获取当前注网的运营商信息,需要等待注网成功后才可获取到。
参数 :
参数 | 定义 | 结构体成员 | 解释 |
---|---|---|---|
yopen_nw_operator_info_s |
运营商信息结构体 | long_oper_name[YOPEN_NW_LONG_OPER_MAX_LEN+1] |
运营商名称全称 |
short_oper_name[YOPEN_NW_SHORT_OPER_MAX_LEN+1] |
运营商名称简称 | ||
mcc[YOPEN_NW_MCC_MAX_LEN+1] |
移动设备国家代码 | ||
mnc[YOPEN_NW_MNC_MAX_LEN+1] |
移动设备网络代码 |
示例 :
执行代码
yopen_nw_operator_info_s oper_info = {0};// 初始化用于存储运营商信息的结构体变量
yopen_nw_get_operator_name(0, &oper_info);// 调用函数获取运营商信息,传入SIM卡槽编号和结构体
DEMO_NW_TRACE("yopen_nw_get_operator_name, mcc %s, mnc %s",oper_info.mcc, oper_info.mnc);//打印查询信息
打印结果
yopen_nw_get_operator_name, mcc 204C044, mnc 044//查询的移动设备国家代码为204C044,移动设备网络代码044
物理层状态信息查询
yopen_nw_get_phy_status_info(uint8_t nSim,yopen_nw_phy_status_info_s *phy_status_info)
功能 :获取物理层状态信息。
参数 :
参数 | 定义 | 结构体成员 | 解释 |
---|---|---|---|
yopen_nw_phy_status_info_s |
物理层状态信息结构体 | pci |
物理小区标识 |
snr |
信噪比 | ||
rssi |
接收信号强度指示 | ||
rsrp |
参考信号接收功率 | ||
rsrq |
参考信号接收质量 | ||
band |
频段 | ||
其他 | 详情参考yopen_nw.h |
示例 :
执行代码
yopen_nw_phy_status_info_s phy_status_info = {0};// 初始化用于存储物理层状态信息的结构体变量
yopen_nw_get_phy_status_info(0, &phy_status_info);// 调用函数获取物理层状态信息,传入SIM卡槽编号和结构体
DEMO_NW_TRACE("yopen_nw_get_phy_status_info band:%d, pci:%d,rsrp:%d rsrq %d, rssi %d, snr %d", phy_status_info.band,phy_status_info.pci,phy_status_info.rsrp,phy_status_info.rsrq,phy_status_info.rssi, phy_status_info.snr);//打印查询信息
打印结果
yopen_nw_get_phy_status_info band:0, pci:0,rsrp:150 rsrq 0, rssi 0, snr -20//查询的频段为0,物理小区标识为0,参考信号接收功率为150,参考信号接收质量为0,接收信号强度指示为-20
小区信息查询
yopen_nw_get_cell_info(uint8_t nSim, yopen_nw_cell_info_s *cell_info)
功能 :获取当前服务及邻近小区信息,同步API
参数 :
参数 | 定义 | 结构体成员 | 解释 |
---|---|---|---|
yopen_nw_cell_info_s |
小区信息结构体 | lte_info_valid |
LTE制式下小区信息是否可用 0 不可用 1 可用 |
lte_info_num |
LTE制式下获取到的小区个数 | ||
yopen_nw_lte_cell_info_s.flag |
小区类别: 0 主小区 1 频间相邻小区 |
||
yopen_nw_lte_cell_info_s.cid |
小区全球识别码; 0表示未接收到小区全球识别码 |
||
yopen_nw_lte_cell_info_s.mcc |
移动设备国家代码 | ||
yopen_nw_lte_cell_info_s.mnc |
移动设备网络代码 | ||
yopen_nw_lte_cell_info_s.tac |
跟踪区域码 | ||
yopen_nw_lte_cell_info_s.pci |
物理小区识别码 | ||
yopen_nw_lte_cell_info_s.mnc_len |
移动设备网络代码长度 | ||
yopen_nw_lte_cell_info_s.isTdd |
无线网络制式 0:FDD 1:TDD,仅服务小区有效 |
||
yopen_nw_lte_cell_info_s.band |
小区的频段,仅服务小区有效 | ||
yopen_nw_lte_cell_info_s.earfcn |
E-UTRA绝对射频信道号。范围:0~65535 |
示例 :
执行代码
yopen_nw_cell_info_s cell_info = {0};// 初始化用于存储小区信息的结构体变量
ret = yopen_nw_get_cell_info(0, &cell_info);// 调用函数获取小区信息,传入SIM卡槽编号和结构体
DEMO_NW_TRACE("yopen_nw_get_cell_info lte_info_valid:%d, lte_info_num: %d", ret, cell_info.lte_info_valid, cell_info.lte_info_num);//打印查询信息
打印结果
yopen_nw_get_cell_info lte_info_valid:1, lte_info_num: 2//查询到LTE制式下小区信息可用,获取到两个小区
信号质量查询
yopen_nw_get_csq(uint8_t nSim, unsigned char *csq)
功能 :获取csq信号强度
参数 :
参数 | 说明 |
---|---|
csq |
用于存储csq 信号强度信息的变量 |
示例 :
执行代码
unsigned char csq = 0;// 定义用于存储信号质量值的变量
ret = yopen_nw_get_csq(0, &csq);// 调用函数获取信号质量,传入SIM卡槽编号和存储变量
DEMO_NW_TRACE("yopen_nw_get_csq: csq:%d", csq);//打印查询信息
打印结果
yopen_nw_get_csq: csq:27//查询的csq强度为27
网络时间信息查询
yopen_nw_get_nitz_time_info(yopen_nw_nitz_time_info_s *nitz_info)
功能 :获取当前基站时间,此时间只在注网成功的那一刻更新,需要当地网络支持。
参数 :
参数 | 定义 | 结构体成员 | 解释 |
---|---|---|---|
yopen_nw_nitz_time_info_s |
当前网络时间信息结构体 | nitz_time[32] |
本地时间。格式为:YY/MM/DD HH:MM:SS '+/-'TZ DSTB TZ:本地时区(以15分钟为单位显示本地时间和GMT时间的差异) DST:夏令时调整时间。例如:20/10/21 09:17:43 +32 00 |
abs_time |
从1970-1-1,00:00:00(UTC时间)到现在的总秒数。0表示不可用 |
示例 :
执行代码
yopen_nw_nitz_time_info_s nitz_info = {0};// 初始化用于存储网络时间信息的结构体变量
ret = yopen_nw_get_nitz_time_info(&nitz_info);// 调用函数获取网络时间信息,传入结构体变量
DEMO_NW_TRACE("yopen_nw_get_nitz_time_info nitz_time:%s, abs_time:%ld", nitz_info.nitz_time, nitz_info.abs_time);//打印查询信息
打印结果
yopen_nw_get_nitz_time_info nitz_time:25/05/15 08:30:30+32 00, abs_time:0//查询到的基站时间
网络信息设置
网络选择设置
yopen_nw_set_selection(uint8_t nSim, yopen_nw_seclection_info_s *select_info)
功能 :设置运营商的选择,同步API
参数 :
参数 | 定义 | 结构体成员 | 解释 |
---|---|---|---|
yopen_nw_seclection_info_s |
用于存储选择的运营商信息的结构体 | nw_selection_mode |
运营商选择方式 0 Modem自动选择,MCC和MNC无效。 1 手动选择 |
mcc[YOPEN_NW_MCC_MAX_LEN+1] |
移动设备国家代码 | ||
mnc[YOPEN_NW_MNC_MAX_LEN+1] |
移动设备网络代码 | ||
act |
注网制式,详情参考yopen_nw.h |
示例 :
执行代码
memset(&select_info, 0, sizeof(select_info));
select_info.act = YOPEN_NW_ACCESS_TECH_E_UTRAN; // 设置接入技术
sprintf((char *)&select_info.mcc, "%s", "460"); // 设置 MCC,例如中国移动为 460
sprintf((char *)&select_info.mnc, "%s", "01"); // 设置 MNC,例如中国移动的一个 MNC 为 01
select_info.nw_selection_mode = 1; // 设置网络选择模式
ret=yopen_nw_set_selection(0, &select_info);//调用函数设置运营商,传入SIM卡槽编号和结构体,返回值ret为0表示成功
DEMO_NW_TRACE("set_selection ret%d,", ret);//通过返回值ret判断是否执行成功
打印结果
set_selection ret0//执行成功
网络频段设置
yopen_nw_set_band(uint8_t band_num, uint8_t *band_arr)
功能 :设置网络频段
参数 :
参数 | 说明 |
---|---|
band_num |
用于存储当前支持的频段数量的变量 |
band_arr |
用于存储当前支持的频段数组 |
示例 :
执行代码
uint8_t custom_band[] = {2,4,7};// 定义要设置的频段列表
int ret = yopen_nw_set_band(sizeof(custom_band)/custom_band[0], custom_band);// 调用函数设置频段,传入频段数量和频段列表,返回值ret为0表示成功
DEMO_NW_TRACE("set_band ret%d,", ret);//通过返回值ret判断是否执行成功
打印结果
set_band ret0//执行成功
举例演示
demo_nw.c
通过调用以上接口能够设置指定频段与所有支持频段,并获取已设频段信息,持续查询并通过日志打印输出网络注册状态、信号强度、NITZ 时间、运营商名称、信号强度详细信息、物理层状态、小区信息及网络选择信息等。
-
打开
demo_nw.c
,经编译运行后烧录至开发板,具体过程参考Yopen 入门篇开发入门章节 -
打开EPAT工具查看打印log,工具使用方法请参考工具篇抓日志工具EPAT使用指南