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