主题中讨论的其他部件:Z-stack, CC2531, CC2531EMK
你(们)好
我尝试将设备添加到Zigbee网络,但该设备没有以节点描述符响应进行响应。 我很快就注意到ZNP重试了很多次。 是否可以减少重试次数,或者这只是为了克服快速衰减?
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.
好的,明天我会将该理论付诸测试,向其发送一些消息,然后生成另一个日志。
我已向ZStack添加了通知,以便我的应用程序收到加入网络的任何设备,详细信息或无详细信息的通知。
我非常怀疑ZNP代码中存在竞争条件,因为有时它会在我发出指令后几分钟内传输许可加入,此外(根据Ubiqua)它会在几分钟后发送多个虚假许可加入。 有时我们不得不冷启动ZNP。 这种对地雷的怀疑也与上述轨迹中观察到的延迟重试模式相一致。
Ubiqua踪迹^
链接密钥为69:90:2e:ec:dd:6d:99:6d:aa:0d:be:25:31:5b:54:7b
我们正在查看链路密钥(序列号197)的重试次数切换,如上图所示。 终端设备成功加入。
我向Mac-TX添加了一些跟踪,以下条目对应于链接密钥重试次数:
Mac_TXS:TS 89.3208万 CSMA 1 FrmeTyp 1 ReTx 0 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f
Mac_TXS:TS 89.3235万 CSMA 1 FrmeTyp 1 ReTx 1 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f
Mac_TXS:TS 89.3244万 CSMA 1 FrmeTyp 1 ReTx 1 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f
Mac_TXS:TS 89.3263万 CSMA 1 FrmeTyp 1 ReTx 1 Len 71:FC 8861 SN 197 PAN AE3 nAddr d80f
其中...
TS是从osal_GetSystemClock()获取的时间戳
CSMA是以下其中之一:
#define MAC_TX_TYPE_LEAD_CSMA 0x00
#define MAC_TX_TYPE_UNLETATE_CSMA 0x01
#define MAC_TX_TYPE_LEASEed 0x02
#define MAC_TX_TYPE_GREGE_POWER 0x03
FrmeTyp是"pMacDataTx->internal.frameType"
reTx是"txRetransmitFlag"的状态
len为"pMacDataTx->MSDU.len"
FC是数据包中的帧控制
sn是数据包中的序列号
PAN是数据包中的PAN ID
nAddr是数据包中的目的网络地址
因此,我们可以看到同一条消息发送了4次,快速连续重试了3次。
因此,有两个问题:
1)从osal_GetSystemClock()返回的代码的时间间隔是多少?
2)这些重试周期这么短是否正常/预期?
我在代码中注意到“macTxFrameRetransmit”是从库调用的,因此我看不到使用什么逻辑来确定何时执行重试。
您好,
我很确定您看到的传输密钥问题是由于我们最近发现的竞争状况造成的。 简而言之,在新设备加入网络后,ZvApp会启动NV写入操作以更新NV闪存中的网络信息,这是一个阻止操作,可能需要大量时间,最长~500毫秒。 即使Zed及时轮询传输密钥,ZC由于NV操作受阻而发送传输密钥的速度不够快,并且在实际发送时,Zed已关闭其接收器。
我们有一个宏,它将错开NV写入操作的开始时间(这是在ZNP项目中,而不是网关项目中)尝试将ZDAPP_UPDATE_Nwk_NV_TIME的值从默认值700 (ms)更改为更大的值,如3500, 这将使NV更新操作稍后开始,因此不会干扰网络调试。