Z-stack提供了兩種sleep模式,LITE和DEEP(PM2/PM3)。當系統需 要喚醒去執行一些周期性的事件時,使用LITE sleep;當系統沒有被定制周期事件而是通過外部中斷(如按鍵)來喚醒設備,使用DEEP sleep。例如帶有傳感器的終端設備,它需要周期性的喚醒發送采集的數據,又如遠程控制終端設備通過按鍵喚醒來發送一信息,它們的大部分時間都是處于 sleep,以降低功耗。 第一步:添加編譯選項:POWER_SAVING 默認情況下,Z-stack里終端設備的電源管理是關閉的。添加編譯選項POWER_SAVING以開啟此功能 第二步:在f8wConfig.cfg里設置:-DRFD_RCVC_ALWAYS_ON = FALSE
-DRFD_RCVC_ALWAYS_ON=FALSE 第三步:根據需要,在f8wConfig.cfg里設置三個參數:
-DPOLL_RATE=1000
-DQUEUED_POLL_RATE=100
-DRESPONSE_POLL_RATE=100 Z-stack工程終端設備默認情況下為電源管理關閉,自動輪詢消息這一功能是開啟的。這里 有三個輪詢選項,每一個都由一個不同的時間延遲參數控制。當電源管理功能開啟后(添加POWER_SAVING),任一個輪詢選項的設置都會影響到睡眠模 式。時間延遲的設置不能用于DEEP skeep中的輪詢,因此限制了降低功耗。這三個輪詢選項分別如下: Data Request Polling—周期性向父節點發送數據請求來輪詢消息隊列。輪詢的時間間隔由NLME_SetPollRate()或gNWK_POLL_RATE設定,如果事先沒有使能它,那么在調用時就立即進行輪詢。 Queued Data Polling—在收到數據指示后,就會向父節點請求消息。這個時間間隔可由NLME_SetQueuedPollRate()或gQUEUED_POLL_RATE設定。 Response Data Polling—在收到數據確認指示后,就會向父節點請求響應消息,這個時間間隔可由NLME_SetResponsePollRate()或gRESPONSE_POLL_RATE設定。 函數說明: NLME_SetPollRate()——設置/改變網絡檢測速率,僅終端設備可用。 NLME_SetQueuedPollRate()——設置/改變隊列檢測速率,僅終端設備可用。 NLME_SetPollRate()——設置/改變響應檢測速率,僅終端設備可用。 如果只是使用默認的輪詢頻率進入睡眠態,則只能進入LITE sleep。為了進入DEEP sleep則必須將gNWK_POLL_RATE設為0,不讓它反復輪詢。 設置這個三個選項可以實現多種輪詢方式,例如,對于一個不需要接收消息的設備,在它加入網絡后,就將這三個選項都設為0。如果APS層使用了ACK,則必需確保在消息發送后到收到ACK這一段時間內,輪詢是使能的。 在有的系統中,可能需要使用可變的輪詢頻率,根據具體應用而進行設置。
|