为什么endpoint会不断的去请求data request,这个请求的作用是什么呢? 我现在endpoint节点是温度采集的,每5s发送一次温度数据,打开了POWER_SAVING功能,进入了PM2模式,通过定时器唤醒。那这个data request发出去之后,会等待多久,然后节点再次进入休眠模式呢?
猜想1: 是不是去父节点查询有没有属于自己的信息?如果有,父节点收到data request请求,就会主动返回给它?
关闭了NWK_AUTO_POLL,为什么还是有data request?
VV:
Xiaobo,
Endpoint在ZigBee 协议里面还有其他的意思,你的提问应该是End Device吧?
End device的通信都是通过父节点来做,包括广播,转发数据等都是有父节点完成的。那么当父节点有数据需要发给子设备End device的时候,数据是buffer在父节点底层的,因为父节点有可能认为节点处于休眠状态,或者节点的RX没有打开,所以每次需要节点Data request去向父节点请求数据,当父节点收到Data request以后,再把数据发给子设备。
如果在开启了PM2模式下,节点在发送完成Data request大概会有几时ms的时间RX打开的。
你的猜想是正确的。
修改下面这个poll rate在f8wconfig.cfg文件里面
/* The number of milliseconds to wait between data request polls to the coordinator. */-DPOLL_RATE=1000
JIM GREEN8:
回复 VV:
VV您好
我实际测试时候有点问题,我测试的环境是一个协调器和一个休眠的终端,在休眠的时候我发送点播数据,等终端发送datarequest的时候,协调器并没有给终端发送目标信息,似乎只有在终端开始发送datarequest前比较短的时间内发送数据终端才能接受到,这是什么原因呢
JIM GREEN8:
回复 VV:
协议栈中是否提供了父节点响应终端的datarequest的代码给我们
caigang lan:
回复 JIM GREEN8:
我也是遇到這个问题,有啥好办法
chunquan lin:
回复 VV:
End device如何取消data request
chunquan lin:
回复 VV:
End device如何取消data request
VV:
回复 chunquan lin:
可以通过NLME_SetPollRate( uint32 newRate );把poll rate设置成0,节点不会发送data request。
不发送data request意味着,父设备的数据没办法下发了,因为父设备给子设备的数据都是通过子设备的data request查询来接收的。
chunquan lin:
回复 VV:
你好,谢谢你的回复。再问你一个问题,是不是把这个设置成真(-DRFD_RCVC_ALWAYS_ON=TRUE),就算不发送data request,也可以正常接收父设备的数据