天天看點

[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裝置建網流程                         

繼續閱讀