问题背景:
在Target模块中调用下面函数向Remoter周期发送信号:
ZStatus_t zcl_SendCommand( uint8 srcEP, afAddrType_t *destAddr,
uint16 clusterID, uint8 cmd, uint8 specific, uint8 direction,
uint8 disableDefaultRsp, uint16 manuCode, uint8 seqNum,
uint16 cmdFormatLen, uint8 *cmdFormat )
当其他参数不变,只改变disableDefaultRsp的情况下出现下面两种差异明显的场景:
场景1:disableDefaultRsp设置为TRUE时,Remoter能100%接收到Target端发送的数据包;
场景2:disableDefaultRsp设置为FALSE时,Remoter随着时间的推移接收到的数据包比例下降,最后接近于0。
Target模块发送周期为200ms、400ms、600ms、800ms、1000ms和10s时都出现场景1和场景2两种形式。
问题1:按我自己的理解是disableDefaultRsp赋予FALSE时,接收端在接收到数据包后会调用zcl_SendDefaultRspCmd()而反馈回响应的反馈信息。如果在一定的时间内没有信息反馈回来则发送端(即Target模块)会进行重发,因此会降低丢包率。但是现在怎么得到相反的结果?
问题2:disableDefaultRsp=FALSE时,是否能开启ZCL层的重发机制?重发次数和时间间隔在哪设置?默认值是多少?
VV:
default response 没有收到,也不会有重发的。这个跟ACK不一样。
Remote是低功耗设备,平时是休眠的。 你的Target怎么给Remote一直发数据的?
qian Sun:
回复 VV:
我用Remote周期性的给Target发送ON/OFF命令,当Target收到ON/OFF命令时等待18ms再给Remote发送反馈信息。此时Remote还没有休眠,所以能接受到发送的数据包。请问下怎样启动MAC和NWK层的重发机制呢?
qian Sun:
回复 VV:
了解了,非常感谢!