針對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()函數