4_1_AliOS Things 操作系统网络篇之 netmgr|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习4_1_AliOS Things 操作系统网络篇之 netmgr。

开发者学堂课程【HaaS 物联网应用开发课程4_1_AliOS Things 操作系统网络篇之 netmgr】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13835


4_1_AliOS Things 操作系统网络篇之 netmgr

 

内容介绍:

一、Netmgr 基本介绍

二、Netmgr 使用方法

三、Netmgr 分析手段

 

一、Netmgr 基本介绍

1. Netmgr 简介

image.png

网络连接能力是万物互联的最重要的基础能力之一。AliOS Things 从诞生演进到今天,网络相关有两个模块至关重要,一个是提供配网连接能力的 Netmgr 模块,另一个是提供数据通信能力的 LwIP 模块。其中 Netmgr 是负责控制链路,LwIP 是负责数据链路。

本次主要介绍 Netmgr 模块,接入 Wi-Fi 网络,是大部分 loT 设备联网的第一步。接入 Wi-Fi 一般需要经历配网和连网两个阶段。 Netmgr 模块将Wi-Fi驱动的连网能力抽象提取出来,方便 loT 设备快速入网连云。Netmgr是一个网络管理模块,提供了网络相关的 API 以及命令,方便进行网络管理。

2. Netmgr 架构图

Netmgr 将 Wi-Fi 具体的操作进行统一封装,对应用层提供接口,方便的对 Wi-Fi 网络进行管理。如下是 Netgmr 在主要架构。

image.png

中间包含很多模块,提供将APP对于网络的需求最后对应到底层 Wi-Fi 驱动的控制。其中白色部分可重点关注 WiFi,初始化的 WiFi init,WiFi Enable,WiFi Connect,DHCP,SNTP 模块。Trigger Event Cb 关于回调,可参见之后详细介绍。


二、Netmgr 使用方法

1. Netmgr 命令介绍

支持使用命令的方式对 Wi-Fi 连网相关的操作,如,对存储的连接信息的读/写删除,打印当前网络内的所有AP的信息,连接 AP,断开 AP 的连接,查询网络状态等。

命令行

说明

netmgr -t wifi -i

初始化

netmgr -t wifi -a [0/1]

设置是否自动重连0,不自动重连;1,自动重连。

netmgr -t wifi -b [0/1]

是否保存历史连接记录。0,不保存历史连接记录。1,保存历史连接记录。

netmgr -t wifi -c [ssid][password]

使用 ssid password 连网

netmgr -t wifi -e

断开Wi-Fi连接

netmgr -t wifi -w [wifi_config]

写Wi-Fi配置文件。wifi_config 格式,如,network={\\nssid=\ "aos\"\\npassword=\"123456\"\\nchannel=\"0\"\\n}\\n

netmgr -t wifi -r

读Wi-Fi配置文件

netmgr -t wifi -d

删除Wi-Fi配置文件

netmgr -t wifi -p

打印当前网络状态

netmgr -t wifi -s

打印当前网络上的AP的信息

其中 netmgr -t wifi -inetmgr -t wifi -c [ssid][password]使用最多,netmgr -t wifi -c [ssid][password] 后期会大量使用,需要明确其参数和作用。

 SSID  "aos",密码是 "123456"的 AP:netmgr -t wifi -i

netmgr -t wifi -c aos 123456

2. Netmgr API 介绍

Netmgr 提供了一组 API 支持方便用户快速接入 AP。并且能在代码前面灵活控制网络连接。

API

作用

参数

int netmgr_init(void);

初始化 netmgr模块

-

void netmgr_deinit(void);

反初始化 netmgr

-

int netmgr_start(bool autoconfig);

启动 netmgr

Autoconfig:是否自动连接网络

int32_t netmgr_connect(const char *ssid, const uint8_t*password, uint32_t timeout);

连接网络

Ssid : wifi的ssid

Password : wifi的密码

Timeout :连接超时时间,单位ms

void netmgr_stats(int32_t interface, netmgr_stats_t *stats);

获取网络统计信息,主要是IP地址

Interface : 网卡名字,如INTERFACE_WIFI

Stats :网卡统计信息

注意:

netmgr_start 函数当参数 autoconfig  true 时,使能自动连接 Wi-Fi 功能。如果设备有过成功连接 AP 的记录,会自动去连成功链接过的 AP 记录里的 SSID  Password。如果设备没有成功连接 AP 的记录,就不会自动去发起连网动作。当参数 autoconfig  false 时,关闭自动连接 AP 的功能,也不会去连 AP。

3. Netmgr 编译使用

Config.in 里增加︰"select AOS_COMP_NETMGR if !AOS_CREATE_PROJECT”比如如下 demo 中需要 netmgr 组件,就添加该行

config AOS_APP_HELLOWORLD_DEMO

bool "Helloworld Demo"

select AOS_COMP_OSAL_AOS if !A0S_CREATE PROJECT

select A0S_COMP_NETMGR if !A0S CREATE PROJECT

这里使用 select 之后,当编译实验 project 的时候就会自动编译

netmgr 组件,如下图所示,在执行 aosmake 的时候能够看到 

netmgr。具体编译方式 Config.in 其他修改可以参考编译环境章节。

image.png

4. Netmgr 使用介绍

#include "netmgr.h"

#include "aos/yloop. h"

static void wifi_service_event(input_event_t *event,void *priv_data)

{

if ( event->type != EV_WIFI){

return;

}

if ( event->code != CODE_WIFI_ON_GOT_IP){

return;

}

// add application start logic here

}

void start_netmgr( void) {

netmgr_init( );

aos_register_event_filter(EV_WIFI,wifi_service_event,NULL);netmgr_start(false) ;

netmgr_connect( "Test_wiFi",“123456”,10 * 1000);

}

使用检索提到的几个重要接口,有 netmgr_initnetmgr_start 指定 true 或 false,false 指进来后不会进行自动重连,如果需要进行自动重连,则设置为 true,还有进行网络连接的自动指令,即  netmgr_connect,其中第一部分为WiFi名字,第二部分为WiFi密码,第三部分为指定连接的超时时间,单位为毫秒,如果超时则自动退出自动连接的流程。

注册了一个 wifi_service_event 事件来监听事件,当收到 type 

EV_WIFl,code  CODE_WIFI_ON_GOT_IP,表示成功获取到了IP地址。

 

三、Netmgr 分析手段

1.Netmgr 关键事件介绍

Netmgr 关键事件主要主要产生于 Wi-Fi 的连接过程,具体包括∶

关键事件

说明

CODE_WIFI_CMD_RECONNECT

重连事件

cODE_WIFI_ON_CONNECTED

连接完成事件

CODE_WIFI_ON_DISCONNECT

断开连接事件

CODE_WIFI_ON_GOT_IP

获取到IP地址事件

这四个事件分别对应到 Netmgr 在控制网络连接过程中的多个事件,这些事件会对分析和调试有重要帮助,能清楚地知道当前处于哪一个阶段。

关键事件是在 Netmgr 初始化时调用 aos_register_event_filter(EV_WIFI, netmgr_events_executor,NULL);注册了关注重要事件。

如果有兴趣查看 Netmgr 内部事件流程,可以参考代码︰

components/network/netmgr/src/netmgr_wifi.c 中的

netmgr_events_executor 函数。

2.Netmgr 关键日志分析

Netmgr 关键日志主要是为了方便根据串口日志识别当前设备的网络状态,具体包括:

关键日志

说明

NETMGR_CONN conn_connecting

表示Wi-Fi连接中

NETMGR_CONN conn_connected

表示Wi-Fi连接成功

NETMGR_CONN conn_obtaining_ip

表示正在获取IP地址

wifi_dhcp_start:1763 start dhcp

表示启动 DHCP client 访问IP

netmgr_ip_got_event

表示获取到IP地址事件

start sntp task.

表示启动了 sntp 服务器

[sntp] OK: sec 739241320 usec 1612343811

表示 sntp 成功获取到时间

举例:

在串口日志中看到如下信息,就表示 sntp 已经成功获取到网络时间。比如可以根据此时判断 Wi-Fi 已经连接成功,并且设备能够访问广域网数据。

image.png

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
1月前
|
安全 Linux 虚拟化
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
124 3
Cisco IOS XRv 9000 Router IOS XR Release 7.11.2 MD - 思科 IOS XR 网络操作系统
|
1月前
|
网络协议 区块链 KVM
Arista vEOS 4.35.0F 发布 - 虚拟化的数据中心和云网络可扩展操作系统
Arista vEOS 4.35.0F 发布 - 虚拟化的数据中心和云网络可扩展操作系统
129 7
Arista vEOS 4.35.0F 发布 - 虚拟化的数据中心和云网络可扩展操作系统
|
1月前
|
监控 区块链 数据中心
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
175 0
Arista EOS 4.35.0F 发布 - 适用于下一代数据中心和云网络的可扩展操作系统
|
1月前
|
Kubernetes Cloud Native 区块链
Arista cEOS 4.35.0F 发布 - 针对云原生环境设计的容器化网络操作系统
Arista cEOS 4.35.0F 发布 - 针对云原生环境设计的容器化网络操作系统
95 0
|
2月前
|
Devops API 语音技术
Cisco NX-OS 10.6(1)F 发布 - 数据中心网络操作系统
Cisco NX-OS 10.6(1)F 发布 - 数据中心网络操作系统
95 0
Cisco NX-OS 10.6(1)F 发布 - 数据中心网络操作系统
|
4月前
|
弹性计算 运维 Kubernetes
看阿里云操作系统控制台如何一招擒拿网络丢包
如何结合操作系统控制台快速定位问题?
|
4月前
|
弹性计算 运维 Kubernetes
看阿里云操作系统控制台如何一招擒拿网络丢包
阿里云操作系统控制台帮忙客户快速定位问题,不仅成功完成业务部署并实现稳定运行,更有效遏制了持续性成本消耗。
|
6月前
|
网络协议 区块链 KVM
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
204 2
Arista vEOS 4.30.10M - 虚拟化的数据中心和云网络可扩展操作系统
|
7月前
|
Devops API 语音技术
Cisco NX-OS Software Release 9.3(15) - 数据中心网络操作系统
Cisco NX-OS Software Release 9.3(15) - 数据中心网络操作系统
177 5
Cisco NX-OS Software Release 9.3(15) - 数据中心网络操作系统
|
6月前
|
监控 区块链 数据中心
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统
216 0
Arista EOS 4.34.0F - 适用于下一代数据中心和云网络的可扩展操作系统

推荐镜像

更多