Arxi 0 18 июля, 2014 Опубликовано 18 июля, 2014 · Жалоба Добрый день! Возникла проблема с ретрансляцией широковещательных сообщений. Создал сеть из координатора, роутера и конечного устройства. Когда роутер и конечное устройство в зоне досягаемости координатора - то все работает отлично. Широковещательные сообщения получают все, и все могут отправлять на координатор. В WSN мониторе видим топологию сети "звезда". Потом разносим устройства так, что конечное устройство выходит из зоны досягаемости координатора, и ставим между ними роутер. В WSN мониторе видим что устройства выстроились цепочкой, данные с конечного устройства координатор получает, но при отправке широковещательного сообщения координатором оно не доходит до конечного устройства... Нужны ли какие то специальные настройки или отличается ли обработка сообщения конечным устройством от координатора напрямую и при ретрансляции роутером? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 18 июля, 2014 Опубликовано 18 июля, 2014 · Жалоба но при отправке широковещательного сообщения координатором оно не доходит до конечного устройства... Покажите код инициализации запроса. Вероятнее всего не убрали запрос подтверждения. Нужны ли какие то специальные настройки или отличается ли обработка сообщения конечным устройством от координатора напрямую и при ретрансляции роутером? Нет, особых настроек не нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arxi 0 18 июля, 2014 Опубликовано 18 июля, 2014 (изменено) · Жалоба Да вроде убрал....Вот код: appNwkDataReq.dstAddr = 0xffff; appNwkDataReq.dstEndpoint = APP_ENDPOINT; appNwkDataReq.srcEndpoint = APP_ENDPOINT; appNwkDataReq.options = NWK_OPT_BROADCAST_PAN_ID; appNwkDataReq.data = (uint8_t *)&appMsg_pwm; appNwkDataReq.size = sizeof(appMsg_pwm); appNwkDataReq.confirm = appDataConf; HAL_LedOn(APP_LED_DATA); NWK_DataReq(&appNwkDataReq); appState = APP_STATE_WAIT_CONF; Изменено 18 июля, 2014 пользователем Arxi Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 18 июля, 2014 Опубликовано 18 июля, 2014 · Жалоба NWK_OPT_BROADCAST_PAN_ID Убрать, оно не для этого. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arxi 0 18 июля, 2014 Опубликовано 18 июля, 2014 · Жалоба Убрать, оно не для этого. Хм...откуда я это взял то....То есть достаточно выставить appNwkDataReq.dstAddr = 0xffff; И все? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 18 июля, 2014 Опубликовано 18 июля, 2014 · Жалоба Хм...откуда я это взял то....То есть достаточно выставить appNwkDataReq.dstAddr = 0xffff; И все? Ага. И .options = 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arxi 0 18 июля, 2014 Опубликовано 18 июля, 2014 · Жалоба Ага. И .options = 0. Спасибо! Пойду пробовать. Все попробовал...все работает как задумано! Еще раз спасибо за помощь) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arxi 0 22 августа, 2014 Опубликовано 22 августа, 2014 (изменено) · Жалоба Еще вопрос возник...все работает, сообщения по цепочке передаются. Рассмотрим вариант Сoordinator <---> Router_1 <----> Router_2. Router_2 не находится в прямой видимости координатора, соответственно сообщения от router_2 в координатор приходят через Router_1. Но как понять что это сообщение от router_2, а не от Router_1? Как я понимаю, при пересылке сообщения переменная uint64_t extAddr; подменяется адресом узла, от которого сообщения было получено? Как можно узнать реальный источник сообщения? Изменено 22 августа, 2014 пользователем Arxi Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 22 августа, 2014 Опубликовано 22 августа, 2014 · Жалоба подменяется адресом узла, от которого сообщения было получено? Как можно узнать реальный источник сообщения? В WSNDemo appMsg.extAddr и appMsg.shortAddr заполняются на передающей стороне и нигде не подменяются. А так же ind->srcAddr в appDataInd() содержит адрес отправителя не зависимо от начинки кадра. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arxi 0 22 августа, 2014 Опубликовано 22 августа, 2014 · Жалоба В WSNDemo appMsg.extAddr и appMsg.shortAddr заполняются на передающей стороне и нигде не подменяются. А так же ind->srcAddr в appDataInd() содержит адрес отправителя не зависимо от начинки кадра. То есть получается сообщение не меняется при пересылке? В описанной мной выше конфигурации сети сообщение от router_1 и router_2 координатор будет получать в том же виде, как если бы они оба были в зоне досягаемости координатора? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 22 августа, 2014 Опубликовано 22 августа, 2014 · Жалоба То есть получается сообщение не меняется при пересылке? Не меняется, конечно. AppMessage_t - это данные приложения, стек о них вообще ничего не знает и они могут быть какими угодно, в том числе не содержать никаких адресов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arxi 0 22 августа, 2014 Опубликовано 22 августа, 2014 (изменено) · Жалоба Не меняется, конечно. AppMessage_t - это данные приложения, стек о них вообще ничего не знает и они могут быть какими угодно, в том числе не содержать никаких адресов. Хорошо, спасибо за ответы. Буду разбираться...Видимо все таки сообщения от routera_2 до координатора не доходят, хотя от router_1, который в зоне прямой видимости - координатор получает сообщения и успешно обрабатывает... Надо ли указывать что либо при отправке сообщений от роутеров в поле appNwkDataReq.options , чтобы происходила ретрансляция до координатора? Сейчас настраиваю отправку так: appNwkDataReq.dstAddr = 0; appNwkDataReq.dstEndpoint = APP_ENDPOINT; appNwkDataReq.srcEndpoint = APP_ENDPOINT; appNwkDataReq.options = NWK_OPT_ACK_REQUEST | NWK_OPT_ENABLE_SECURITY; appNwkDataReq.data = (uint8_t *)&appMsg; appNwkDataReq.size = sizeof(appMsg); appNwkDataReq.confirm = appDataConf; Изменено 22 августа, 2014 пользователем Arxi Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться