针对Simplicity Studio 4,EmberZNet协议栈Zigbee3.0设备入网流程
Platform:Simplicity Studio 4、EmberZNet SDK 6.4.1.0
【SPP】Content:
EmberZNet Zigbee3.0设备建网流程
1、在.isc文件工程的Plugins添加a插件【必须】与b插件【可选】
2、调用emberAfPluginNetworkCreatorStart(bool centralizedNetwork)函数启动NetworkCreator
此函数一调用最终执行扫描信道调度函数scheduleScans()
3、进入scheduleScans()函数
自动扫描网络和信道时,仅通道扫描时间,协议栈默认是:
EMBER_AF_PLUGIN_NETWORK_CREATOR_SCAN_DURATION 4
扫描类型协议栈有以下几种类型:
enum
{
/** An energy scan scans each channel for its RSSI value. */
EMBER_ENERGY_SCAN,
/** An active scan scans each channel for available networks. */
EMBER_ACTIVE_SCAN,
/** A fake scan that is used to turn off the radio. */
EMBER_START_RADIO_OFF_SCAN,
/** A green power channel delivery scan. */
EMBER_STACK_GP_CHANNEL_DELIVERY_SCAN,
EMBER_LAST_SCAN_TYPE = EMBER_STACK_GP_CHANNEL_DELIVERY_SCAN
};
4、扫描完成调到scanHandler(EmberAfPluginScanDispatchScanResults *results)函数
5、进入handleScanComplete(EmberAfPluginScanDispatchScanResults *results)函数
6、进入tryToFormNetwork(void)函数
A处的值均是使用halCommonGetRandom()获取的随机数赋值
B处判断是否是次级信道,如果是并且currentChannelMask为0,则选择一个最糟糕的信道来创建
7、接上图6
C处设置网络安全模式且随机创建一个网络KEY
D处一直轮询,直到通道为上面设置的通道位置,则往下执行
E处在设置的通道建立网络
F处如果建网成功,则执行用户层的网络创建完成callback
G处跳出while循环
8、如果想要以自己指定的PANID、发射功率、通道、集中or分布式建立网络则可使用emberAfPluginNetworkCreatorNetworkForm()函数