由于实际应用的需要,我需要将终端设定为路由节点,发自身温湿度数据的同时也实现路由功能。以sensordemo为例,我直接在事件中加入和senddummyreport中增加halsleep(30000)但是没有反应,使用自己设定定时器休眠也不行,请问下有别的实现思路或者其他睡眠方法吗?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,Z-STACK目前不支持低功耗路由。
目前ZigBee协议里面,节点进行收发数据的时刻都是随机的,所以路由器必须处于活动状态来转发终端节点的数据,或者等待其他终端唤醒以后来请求数据。所以路由器不支持低功耗模式。
我试了下在sensordemo上做修改,在democollector.c的zb_HandleOsalEvent中加入我自己的MY_SLEEP_EVT睡眠事件,设断点检查显示这部分程序也得到执行了,但是系统仍旧没有休眠,仍旧按照原有的频率在发送dummyreport(发dummyreport的时间间隔是38秒,MY_SLEEP_EVT的mySleepPeriod 也是38秒,那是不是意味着76秒发一次dummyreport?),请问未正常休眠是什么原因?如何才能做到强制休眠固定长度的时间?
if(event&MY_SLEEP_EVT)
{
macRxOffRequest();
macRxOff();
OSAL_SET_CPU_INTO_SLEEP(myReportPeriod);
osal_start_timerEx( sapi_TaskID, MY_SLEEP_EVT, mySleepPeriod );
}
你好,我现在有需求将协调器休眠,然后定时唤醒。请问具体该如何做?我打开了POWER_SAVE, 然后
#if defined( POWER_SAVING )
else // Complete pass through all task events with no activity?
{
osal_pwrmgr_device( PWRMGR_BATTERY );
osal_pwrmgr_powerconserve(); // Put the processor/system into sleep
}
#endif
在这个进入休眠前强制添加使用电池选项。但貌似还是进不了休眠。
请教具体该怎么做呀?
在整个Zigbee网络中,协调器作为网络的神经中枢,不能休眠。