据我所知,为了避免广播风暴,协议栈会对广播消息做流量限制,超过限制后会丢弃广播包。比如siliconLab方案,流量限制为每 9 秒窗口时间大约 8 次广播。
那么simplelink协议栈是否也有这个限制呢,相关参数是多少。我在docs/zigbee/html/zigbee/z-stack-overview.html文档里并未找到相关描述,请指教,谢谢。
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.
据我所知,为了避免广播风暴,协议栈会对广播消息做流量限制,超过限制后会丢弃广播包。比如siliconLab方案,流量限制为每 9 秒窗口时间大约 8 次广播。
那么simplelink协议栈是否也有这个限制呢,相关参数是多少。我在docs/zigbee/html/zigbee/z-stack-overview.html文档里并未找到相关描述,请指教,谢谢。
您好,理论上是有这个限制的,但是官方开发文档中没有给出一些例子和具体的方案描述。
如果您想控制广播消息流量的话,可以修改f8wConfig.cfg中的DMAX_BCAST的值来加快广播速率。
另外
程序中可以设置路由器不转发广播包,做法:把 广播半径改成1
另外,可以考虑many to one来优化路径
这个方法可以减小广播风暴
其实我遇到的问题是,通过函数zcl_SendCommand ()发广播包的时候,速率明显下降。如果是单发,最快可每50ms发一包数据,如果是广播包,大概只能每500ms发一包,发快了,返回err提示ZBufferFull,我猜是不是跟广播风暴抑制有关系。
或者你有其它思路,欢迎指正。
我认为您的理解应该是最有可能的情况。
1.您有对硬件进行设计吗?硬件设计也会有上限的限制。
2.
返回err提示ZBufferFull
缓冲区已满,可能是广播数据包的大小超过缓冲区,导致设备无法及时处理,等待被发送的信息还在缓冲区,新的数据包也来了。
您能否尝试减少数据包的大小
或者增大缓冲区