信道、PANID动态更换,beacon request次数与速率控制
[复制链接]
- 信道和PANID设置
在某些手动划分网络的情况下,可以使用此功能改变设备的信道和PANID,例如一些工业使用场景中,有外部配置设备,可以对设备的网络进行有效管理。或者一些其他应用场景。 - Beacon次数限制
对于某些低功耗设备来说,掉线后一直发送beacon是一个非常浪费电池电量的事情,通过调用我写的文件中的API函数,可以有效的,实时的控制设备beacon的次数,例如设置成为6次,那么设备beacon次数达到6次后自动停止搜索网络,等待下次开启搜索。 - Beacon频率设置
在某些情况下,我们需要设备能够以更快的速度beacon加入网络,或者刚开始的时候快速加入,掉网后以更慢一点的速度进行beacon,通过调用文件的API可以有效的设置设备的beacon速率,已达到相关应用的目的。
下面是具体的实现步骤介绍: - 在工程的ZDO文件夹中添加 ZDNwkConfig.h 和 ZDNwkConfig.lib两个文件:
- 在ZDApp.c中的ZDApp_Init函数中添加ZDNwkConfigUpdateRequest函数,记得包含ZDNwkConfig.h头文件。
- 在ZDApp.c中的ZDApp_event_loop函数中下图位置添加ZDONwkConfigSearchNwk函数,并注释掉
ZDO_StartDevice( (uint8)ZDO_Config_Node_Descriptor.LogicalType, devStartMode, DEFAULT_BEACON_ORDER, DEFAULT_SUPERFRAME_ORDER );函数。 - 预编译使能NV_RESTORE。
- 调用提供的API接口与你自己的应用层相结合就可以使用了。
下面给大家讲解下API的使用方法,接口函数在ZDNwkConfig.h中,如下图: 如果要配置信道为15信道,PANID为1234的话,直接在你的程序中调用 ZDNwkConfigSaveRequest函数,如: 如果需要配置设备的beacon次数或者beacon之间的速率,可以调用ZDNwkConfigStartBeacon进行设置,具体的速率请参考NLMEDE.h
假如现在我们有个终端节点,我想让他beacon10次之后就不发beacon request了,并且每次beacon request的速率是480ms ,那么我们只需要简单调用ZDNwkConfigStartBeacon(10,5);通过抓包你会发现,10次beacon request之后设备不再发送,如果传递的次数是0xFFFF,那么beacon request的次数将不会受到限制。 如果要停止beacon request只需要调用ZDNwkConfigStopBeacon函数即可。
后面还会另做一个关于PM2,PM3模式的切换和电源稳定的管理,包括支持串口唤醒,PM2或PM3模式下稳定串口传输或者外设采集等支持。
|