Как распознаются и регистрируются лидеры / маршрутизаторы?

OT-cli работает и работает на 2 разных радиочастотных платформах (CC2358 и Atmel AT86RTxx управляются через SPI с хоста Arm7TDMI). Никаких проблем с компиляцией, связью или загрузкой. Все вроде нормально. Я могу сканировать и видеть все устройства в эфире.

Тем не менее, когда по какой-либо причине выдается команда "start", каждое из состояний устройства становится "лидером" - ни один из них не является Маршрутизатором. Каждый из них отправляет сообщения MLE, и я обнаружил, что когда устройство получает MLE, оно не заносит его в список маршрутизаторов. Это не удается mRouters[i].mState == Neighbor::kStateValid тест на линию 2015 года mle_router.cpp,

Обновленная информация о моей ситуации. Во-первых, кто-нибудь имел опыт мониторинга воздушного движения через Wireshark? Я заметил, что пакеты MLE UPD, рассмотренные wireshark, указывают, что контрольная сумма UPD неверна. Это условие существует как для Targets, TI, так и для Atmel. В любом случае это причина, по которой таблица маршрутизатора не заполняется / не обновляется. Проверка входящей контрольной суммы не выполнена.

Любые идеи кто-нибудь?

2 ответа

Я видел по крайней мере один компилятор (Visual Studio) обрабатывать mState переменная как подпись, в результате чего проверка не пройдена. Внесение следующих изменений исправляет это:

State           mState : 3;

в

unsigned int    mState : 3;

С аналогичной проблемой я столкнулся на другой платформе, где было полезно переключение режима CCA (оценка чистых каналов) в конфигурации радиосвязи на 2 (определение несущей).

CCA имеет 3 режима:
1 - Обнаружение энергии
2 - Carrier Sense
3 - 1 и 2 вместе взятых

Другие вопросы по тегам