在Zstack中,如果终端节点做了-DRFD_RCVC_ALWAYS_ON=TRUE的处理后,能够收到协调器的组播信息,但是此时终端节点不会像父节点定时发DataRequest,这就使得终端节点无从知晓父节点是否掉线,父节点也无从知晓子节点(终端节点)是否掉线,这就使得两中功能就冲突了。请问能否有办法使得终端节点既能收到组播消息,又能保证父子节点间能够识别相互是否掉线?
多谢多谢!
YiKai Chen:
终端节点做了-DRFD_RCVC_ALWAYS_ON=TRUE的处理后,還是可以使终端节点像父节点定时发DataRequest來知晓子节点(终端节点)是否掉线
user5281211:
回复 YiKai Chen:
请问应该在哪里做修改,我发现一旦使能了-DRFD_RCVC_ALWAYS_ON=TRUE后,不管是预编译了NWT_AUTOPOLL还是POWER_SAVING终端节点都不会再有Datarequest反馈?
YiKai Chen:
回复 user5281211:
除了NWK_AUTOPOLL、你還需要在f8wconfig.cfg設訂-DPOLL_RATE
user5281211:
回复 YiKai Chen:
我已经进行了如下设置:
-DRFD_RCVC_ALWAYS_ON=TRUE
/* The number of milliseconds to wait between data request polls to the coordinator. */-DPOLL_RATE=1000
/* This is used after receiving a data indication to poll immediately * for queued messages…in milliseconds. */-DQUEUED_POLL_RATE=100
/* This is used after receiving a data confirmation to poll immediately * for response messages…in milliseconds */-DRESPONSE_POLL_RATE=100
也使能了NWT_AUTOPOLL。
但是终端节点仍然是不发出Data_request
user5281211:
回复 YiKai Chen:
试了一下,果然可以了,可能Zstack预先在程序里根据-DRFD_RCVC_ALWAYS_ON=TRUE做了NLME_SetPollRate( 0 );NLME_SetQueuedPollRate( 0 );NLME_SetResponseRate( 0 );等处理,我在应用层通过 NLME_SetPollRate( 1000 );NLME_SetQueuedPollRate( 100 );NLME_SetResponseRate( 100 );进行了覆盖。谢谢你的指导!
YiKai Chen:
回复 user5281211:
不客氣、如果您认为我的回复解决了您的问题,请确认解决
Susan Yang:
回复 user5281211:
很高兴您能解决问题!不过这样的话,您的终端节点功耗就会高一些。如果需要低功耗的话,还是建议协调器通过单播方式发送数据给节点。
user5281211:
回复 Susan Yang:
好的,多谢多谢