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

简介: 快速学习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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
安全 物联网 调度
【软件设计师备考 专题 】网络操作系统和嵌入式操作系统基础知识
【软件设计师备考 专题 】网络操作系统和嵌入式操作系统基础知识
63 0
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
Linux C/C++ 开发(学习笔记十二 ):TCP服务器(并发网络编程io多路复用epoll)
59 0
|
3月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
39 0
|
1月前
|
安全 算法 网络安全
深入理解操作系统之进程调度策略网络安全与信息安全:防御前线的关键技术与策略
【2月更文挑战第29天】在多任务操作系统中,进程调度策略是核心机制之一,它决定了CPU资源的分配。本文将探讨三种经典的进程调度算法:先来先服务(FCFS)、短作业优先(SJF)和轮转调度(RR)。通过比较它们的优缺点,我们可以理解不同场景下的性能考量,以及如何根据实际需求选择合适的调度策略。 【2月更文挑战第29天】在数字化时代,网络安全和信息安全已成为维护信息完整性、确保数据隐私以及保障网络服务连续性的重要组成部分。本文将深入探讨网络安全漏洞的概念、加密技术的应用以及提升个人和企业安全意识的重要性。通过分析当前网络威胁的类型和特点,文章旨在为读者提供一系列针对网络攻击的预防措施和应对策略,
|
1月前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
【Shell 命令集合 网络通讯 】⭐Linux 显示当前系统的主机名和操作系统类型 uuname命令 使用教程
29 0
|
2月前
|
域名解析 存储 网络协议
某教程学习笔记(一):03、网络基础
某教程学习笔记(一):03、网络基础
17 0
|
6月前
|
安全 Unix Linux
《计算机系统与网络安全》 第八章 操作系统安全基础
《计算机系统与网络安全》 第八章 操作系统安全基础
79 0
|
2月前
|
网络协议 Unix Linux
【网络安全 | 信息收集】操作系统判定及端口扫描(全网最详析)
【网络安全 | 信息收集】操作系统判定及端口扫描(全网最详析)
68 0
|
3月前
|
Ubuntu Unix Linux
Linux 学习笔记一: 常见操作系统相关概念
Linux 学习笔记一: 常见操作系统相关概念
Linux 学习笔记一: 常见操作系统相关概念
|
4月前
|
数据采集 机器学习/深度学习 网络协议
Linux|操作系统|应该知道的网络抓包知识(主要是wireshark,tcpdump)
Linux|操作系统|应该知道的网络抓包知识(主要是wireshark,tcpdump)
74 0