全部文档
概述 硬件支持 快速开发指南 内核 驱动 通用组件 专业组件 常见问题

NetTools 网络接口调试功能组件

简介

通过网络连接实现设备之间的互联互通是物联网应用的核心,当前物联网设备普遍通过通信模组连接到网络中,通信模组在物联网应用中扮演着不可或缺的角色。在物联网应用开发时,不可避免需要调试网络接口相关组件,对于同类任务开发和调试过程,其中关注的调试手段和调试关注的信息都相近。NetTools组件就是集合各类网络组件相对公共的调试功能,方便开发调试的同时,也提供相关信息用于BUG定位。目前NetTools组件仅实现了查询无线模组的接口信息功能、ping测试功能和查看BSD socket连接信息和状态功能,未来会根据实际需要丰富NetTools组件的功能。


目录

代码结构

NetTools组件源代码相对路径为.\components\net\tools,结构如下表所示:

目录 说明
tool.c 各网络组件接口调试功能源码
tool.h 各网络组件调试功能对外接口
Kconfig 功能应用配置文件

功能介绍

根据物联网当前实际的场景中主要是以单无线接口连接为主导,操作系统硬件资源相对非常紧张,且接口信息及状态等的管理功能是非绝对必需的特点考虑,NetTools组件当前主要功能说明如下:

1、仅针对单无线模组的接口信息、状态等提供相应的查询功能,不集合LWIP和WIZnet这类非无线接口管理功能,暂时不考虑多模组统一管理及接口切换等需求;

2、提供一套统一的调试命令供用户调用命令包含ifconfig、ping、socketstat,每个功能命令都可根据用户实际需求配置裁剪;

3、ifconfig获取及展示接口的基本信息,模组接口包含名称、IPv4地址、IMEI号、ICCID、信号质量,WIFI模组包含名称、模式、状态、IPv4地址等;

4、ping测试网络连通性,可配置ping目的地址、包数量、包大小、超时时间,由于系统目前不支持在ping包过程中使用CTRL+C组合键随时结束ping包,因此要求ping包数量上限为可配置设置,默认单次命令配置最大ping 50个包;

5、socketstat获取及展示模组 BSD socket的状态及连接信息,如server IP地址、端口号、socket类型、连接状态;

以上为目前已实现的主要调试功能点,后续会根据实际需要丰富其他公共的调试功能。

工作流程

应用层直接调用ifconfig、ping、socketstat CLI命令,命令通过tools接口层调用modules api,执行对应操作并将结果最终返回给应用层,应用层最终展示相关信息及操作结果。用户也可以在应用需要的时候直接调用tool.h的对外接口,使用相关功能。

使用说明

图形化配置

使用NetTools组件可以通过Menuconfig的图形化工具进行配置选择,配置的路径如下所示:

(Top) → Components→ Network→ Tools
                                                  OneOS Configuration
[*] Enable AT module network debug functions
[*]     Enable module ifconfig features (NEW)
[*]     Enable module ping features (NEW)
(50)        The maximum times of module ping cmd config (NEW)
[*]     Enable module socket stat features (NEW)

在enable debug功能后,会出现enable ifconfig、ping、socket stat features的选项,可以通过配置选择是否启用对应功能。其中ping功能可配置单次ping命令ping包数上限值,默认为50,如果需要做长ping操作,可修改上限值即可。NetTools组件以上功能是依赖于统一的Molink API实现,并且相关功能必须为对应的模组支持且适配,当NetTools组件启用相关功能,则需要对应在模组适配层也启用该功能才能使整个功能正常。

以使用NetTools组件的ifconfig功能查看模组A7600C1的接口信息为例,首先NetTools组件enable ifconfig features,然后进入A7600C1的配置菜单,选择启用ifconfig operate:

(Top) → Components→ Network→ Molink→ Enable IoT modules support → Module→ 4G CAT1 Modules Support→ A7600X → A7600X Config
                                                  OneOS Configuration
[*] Enable A7600X Module Object Auto Create
(uart2) A7600X Interface Device Name (NEW)
(115200) A7600X Interface Device Rate (NEW)
(1500)  The maximum length of AT command data accepted (NEW)
-*- Enable A7600X Module General Operates (NEW)
-*- Enable A7600X Module Network Service Operates (NEW)
[*] Enable A7600X Module Ping Operates (NEW)
[*] Enable A7600X Module Ifconfig Operates (NEW)
-*- Enable A7600X Module Network TCP/IP Operates (NEW)
[*] Enable A7600X Module BSD Socket Operates

以上配置完成后退出并保存配置,重新生成工程后,编译OneOS bin包运行即可通过ifconfig命令查看模组A7600C1的接口信息:

sh />ifconfig

LIST AT MODULE INFORMATION
--------------------------------------------------------------------------------
Module Name    : a7600x
IMEI   Number  : 864424041943660
ICCID  Number  : 89860446101980587174
Signal Quality : rssi(31), ber(99)
IPv4   Address : 100.124.32.4
--------------------------------------------------------------------------------
sh />

如果应用层想获取相关功能能力,则在启用对应功能后,包含tool.h正确调用相关接口即可。

关于各类接口详细的说明可以参考NetTools组件API使用说明手册。

注意事项


NetTools API

API简介

NetTools组件为OneOS的各类网络组件提供公共的调试功能,目前只是为Molink组件的无线通讯模组提供接口信息查询、连通性测试ping、socket信息及状态查询等功能,后续会根据应用需要不断丰富NetTools组件的功能。NetTools组件目前主要对外提供ifconfig、ping、socketstat三个命令,也提供了对应的API供应用直接调用,需要说明的是这些接口都是基于Molink统一API实现,即依赖于Molink组件的相关功能。

NetTools API列表

接口名称 接口说明
module_show_info 查询无线模组信息接口
module_ping 无线模组ping测试接口
module_show_socket_stat 查看无线模组BSD socket信息和状态接口

NetTools API说明


module_show_info

模组对应的mo对象创建后,即创建了一个无线接口,如果该模组适配层实现了ifconfig相关信息查询接口,则同时配置NetTools组件和模组的IFCONFIG功能生效,即可使用ifconfig命令获取无线模组的相关接口信息,如接口name、IMEI、ICCID、CSQ、IPv4地址。用户可根据自己实际应用需要,增删改查相关信息。

void module_show_info(void);
参数 说明
void void
返回 说明

使用示例

A7600C1已适配实现ifconfig命令查询相关信息的接口,配置启用ifconfig operates

(Top) → Components→ Network→ Molink→ Enable IoT modules support → Module→ 4G CAT1 Modules Support→ A7600X → A7600X Config
                                                  OneOS Configuration
[*] Enable A7600X Module Object Auto Create
(uart2) A7600X Interface Device Name (NEW)
(115200) A7600X Interface Device Rate (NEW)
(1500)  The maximum length of AT command data accepted (NEW)
-*- Enable A7600X Module General Operates (NEW)
-*- Enable A7600X Module Network Service Operates (NEW)
[*] Enable A7600X Module Ping Operates (NEW)
[*] Enable A7600X Module Ifconfig Operates (NEW)
-*- Enable A7600X Module Network TCP/IP Operates (NEW)
[*] Enable A7600X Module BSD Socket Operates

NetTools组件配置使能ifconfig命令

(Top) → Components→ Network→ Tools
                                                  OneOS Configuration
[*] Enable AT module network debug functions
[*]     Enable module ifconfig features (NEW)
[*]     Enable module ping features (NEW)
(50)        The maximum times of module ping cmd config (NEW)
[*]     Enable module socket stat features (NEW)

退出配置工具并保存配置,重新生成工程并编译OneOS bin包下载运行,调用ifconfig命令即可获取A7600C1模组的相关接口信息,如下:

sh />ifconfig

LIST AT MODULE INFORMATION
--------------------------------------------------------------------------------
Module Name    : a7600x
IMEI   Number  : 864424041943660
ICCID  Number  : 89860446101980587174
Signal Quality : rssi(31), ber(99)
IPv4   Address : 100.124.32.4
--------------------------------------------------------------------------------
sh />

module_ping

模组对应的mo对象创建后,如果该模组适配层实现了ping测试功能接口,则同时配置NetTools组件和模组的PING功能生效,即可使用ping命令测试无线接口与其他网络的连通性,配置过程参考ifconfig。

void module_ping(char *target_name, os_uint32_t times, os_uint16_t size, os_uint32_t timeout);
参数 说明
target_name ping目标地址,域名或IPv4地址,如www.baidu.com、114.114.114.114
times ping包总次数,默认命令单次配置ping包个数为50个,用户可以配置修改
size ping每个包长度,默认64字节,可配置,支持范围由模组适配层进行校验
timeout 每个包的超时时间,默认是5000ms,可配置,支持范围由模组适配层进行校验
返回 说明

使用示例

A7600C1已适配实现ping命令测试模组接口与其他网络连通性,配置启用A7600X的ping operates和使能NetTools的ping features,执行ping命令即可。

ping命令的参数配置格式为:ping

sh />ping
Please input: ping <host address> <times[1,50]> <pkg_size> <timeout(sec)>
sh />
sh />ping www.baidu.com 4 64 10 
[0] 64 bytes from 183.232.231.174 icmp_seq=0 ttl=55 time=215 ms
[1] 64 bytes from 183.232.231.174 icmp_seq=1 ttl=55 time=85 ms
[2] 64 bytes from 183.232.231.174 icmp_seq=2 ttl=55 time=125 ms
[3] 64 bytes from 183.232.231.174 icmp_seq=3 ttl=55 time=85 ms

Ping statistics for 183.232.231.174 :
Packets: Sent = 4, Received = 4, Lost = 0, Mintime = 85 ms, Maxtime = 215 ms
sh />
sh />ping 8.8.8.8 4 64 10       
[0] 64 bytes from 8.8.8.8 icmp_seq=0 ttl=108 time=190 ms
[1] 64 bytes from 8.8.8.8 icmp_seq=1 ttl=108 time=115 ms
[2] 64 bytes from 8.8.8.8 icmp_seq=2 ttl=110 time=110 ms
[3] 64 bytes from 8.8.8.8 icmp_seq=3 ttl=108 time=110 ms

Ping statistics for 8.8.8.8 :
Packets: Sent = 4, Received = 4, Lost = 0, Mintime = 110 ms, Maxtime = 190 ms
sh />

module_show_socket_stat

模组对应的mo对象创建后,如果该模组适配层实现了Net TCP/IP功能接口并启用标准的BSD socket接口,则同时配置NetTools组件socket stat features功能生效,即可使用socketstat命令查看当前使用模组的BSD socket连接信息和状态,配置过程参考ifconfig。

void module_show_socket_stat(void);
参数 说明
void void
返回 说明

使用示例

A7600C1已适配实现Net TCP/IP相关接口和启用BSD socket功能,配置启用A7600X的TCP/IP operates和BSD socket operates,同时使能NetTools的socket stat features,执行socketstat命令即可查看A7600C1模组当前socket的连接信息和状态。

sh />socketstat    /* 初始状态 */

The max socket connections supported by module a7600x is 10

The connected socket status information list
----------------------------------------------------------------------------------------------------
index   socket    type      ip address        port    status          
  1               Unknown   0.0.0.0           0       Not create      
  2               Unknown   0.0.0.0           0       Not create      
  3               Unknown   0.0.0.0           0       Not create      
  4               Unknown   0.0.0.0           0       Not create      
  5               Unknown   0.0.0.0           0       Not create      
  6               Unknown   0.0.0.0           0       Not create      
  7               Unknown   0.0.0.0           0       Not create      
  8               Unknown   0.0.0.0           0       Not create      
  9               Unknown   0.0.0.0           0       Not create      
  10              Unknown   0.0.0.0           0       Not create      
----------------------------------------------------------------------------------------------------
sh />
sh />socketstat   /* 应用层分别建立5个TCP连接和UDP连接后再执行命令,为信息安全手动修改IP和端口信息 */

The max socket connections supported by module a7600x is 10

The connected socket status information list
----------------------------------------------------------------------------------------------------
index   socket    type      ip address        port    status          
  1     0         TCP       121.89.xxx.xxx    6xxx    Connect OK
  2     1         TCP       121.89.xxx.xxx    6xxx    Connect OK
  3     2         TCP       121.89.xxx.xxx    6xxx    Connect OK
  4     3         TCP       121.89.xxx.xxx    6xxx    Connect OK
  5     4         TCP       121.89.xxx.xxx    6xxx    Connect OK      
  6     5         UDP       121.89.xxx.xxx    6xxx    Connect OK      
  7     6         UDP       121.89.xxx.xxx    6xxx    Connect OK      
  8     7         UDP       121.89.xxx.xxx    6xxx    Connect OK      
  9     8         UDP       121.89.xxx.xxx    6xxx    Connect OK      
  10    9         UDP       121.89.xxx.xxx    6xxx    Connect OK      
----------------------------------------------------------------------------------------------------
sh />

常见问题

Q): 为何ping包长度较大时返回超时或错误,且很难返回成功?

A): 网络质量差是常见原因,尤其是NB类型模组,收发大数据包常会有严重丢包现象,不建议大量数据收发,若要进行大包测试,建议把超时时间配置大一些。

results matching ""

    No results matching ""