z-stack是半開源的協定棧,我們并不是能清楚的看到每個層的源碼,部分代碼是以庫的形式提供的。一般情況下,我們至少應該讀懂硬體抽象層和裝置對象層的代碼,這裡需要自己添加自己想要的功能。硬體抽象層裡面有系統消息事件、led事件、鍵盤事件。在裝置對象層裡面有系統消息事件、ZDO狀态改變事件、網絡初始化事件、網絡啟動事件、網絡更新NV事件、裝置重新開機事件。應用層事件有系統消息事件、允許綁定時間事件、綁定時間事件、進入事件、使用者事件等等。
Zigbee協定棧的實時性要求不是很高,是以在設計任務排程程式的 時候,OSAL(作業系統抽象層)采用了輪詢排程隊列方式進行任務排程。
任務号越小,任務優先級越高。MAC層優先級最高,應用層任務優先級最低。OS按優先級高低去執行事件,周而複始去輪詢。