天天看点

[Ember Zigbee]Zigbee3.0设备建网流程                         

 针对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插件【可选】

[Ember Zigbee]Zigbee3.0设备建网流程                         

2、调用emberAfPluginNetworkCreatorStart(bool centralizedNetwork)函数启动NetworkCreator

[Ember Zigbee]Zigbee3.0设备建网流程                         

     此函数一调用最终执行扫描信道调度函数scheduleScans()

3、进入scheduleScans()函数

[Ember Zigbee]Zigbee3.0设备建网流程                         

    自动扫描网络和信道时,仅通道扫描时间,协议栈默认是:

               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)函数

[Ember Zigbee]Zigbee3.0设备建网流程                         

5、进入handleScanComplete(EmberAfPluginScanDispatchScanResults *results)函数

[Ember Zigbee]Zigbee3.0设备建网流程                         

6、进入tryToFormNetwork(void)函数

[Ember Zigbee]Zigbee3.0设备建网流程                         

    A处的值均是使用halCommonGetRandom()获取的随机数赋值

    B处判断是否是次级信道,如果是并且currentChannelMask为0,则选择一个最糟糕的信道来创建

7、接上图6 

[Ember Zigbee]Zigbee3.0设备建网流程                         

C处设置网络安全模式且随机创建一个网络KEY

D处一直轮询,直到通道为上面设置的通道位置,则往下执行

E处在设置的通道建立网络

F处如果建网成功,则执行用户层的网络创建完成callback

G处跳出while循环

8、如果想要以自己指定的PANID、发射功率、通道、集中or分布式建立网络则可使用emberAfPluginNetworkCreatorNetworkForm()函数

[Ember Zigbee]Zigbee3.0设备建网流程                         

继续阅读