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