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中的轮询,因此限制了降低功耗。这三个轮询选项分别如下: Da Queued Da Response Da 函数说明: NLME_SetPollRate()——设置/改变网络检测速率,仅终端设备可用。 NLME_SetQueuedPollRate()——设置/改变队列检测速率,仅终端设备可用。 NLME_SetPollRate()——设置/改变响应检测速率,仅终端设备可用。 如果只是使用默认的轮询频率进入睡眠态,则只能进入LITE sleep。为了进入DEEP sleep则必须将gNWK_POLL_RATE设为0,不让它反复轮询。 设置这个三个选项可以实现多种轮询方式,例如,对于一个不需要接收消息的设备,在它加入网络后,就将这三个选项都设为0。如果APS层使用了ACK,则必需确保在消息发送后到收到ACK这一段时间内,轮询是使能的。 在有的系统中,可能需要使用可变的轮询频率,根据具体应用而进行设置。 |
|
来自: 少占鱼 > 《为人处事-少占鱼》