2

在 2 个不同的 RF 平台(CC2358 和 Atmel AT86RTxx 通过来自 Arm7TDMI 主机的 SPI 控制)上启动并运行 oT-cli。没有真正的编译、链接或加载问题。一切似乎都很好。我可以扫描并查看所有正在播放的设备。

但是,当发出“start”命令时,无论出于何种原因,每个设备状态都变为“leader”——没有一个是路由器。每个都在发送 MLE 消息,我发现当设备接收到 MLE 时,它不会将其输入到路由器列表中。它mRouters[i].mState == Neighbor::kStateValid在第 2015 行未通过测试mle_router.cpp

更新我的情况。首先,有没有人有任何通过 Wireshark 监控空中交通的经验?我注意到,wireshark 剖析的 MLE UPD 数据包表明 UPD 校验和不正确。Targets、TI 和 Atmel 都存在这种情况。无论如何,这就是未填充/更新路由器表的原因。入站校验和检查失败。

有什么想法吗?

4

2 回答 2

0

我已经看到至少一个编译器(Visual Studio)将mState变量视为已签名,导致检查失败。进行以下更改可以修复它:

State           mState : 3;

unsigned int    mState : 3;
于 2016-09-15T19:58:34.760 回答
0

我在另一个平台上遇到过类似的问题,将无线电配置中的 CCA(清晰信道评估)模式切换到 2(载波侦听)很有帮助。

CCA 有 3 种模式:
1 - 能量检测
2 - 载波检测
3 - 1 和 2 组合

于 2016-10-23T09:02:34.023 回答