Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LWMesh 1.2.1
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Wireless/Optic
Arxi
Добрый день!
Возникла проблема с ретрансляцией широковещательных сообщений.
Создал сеть из координатора, роутера и конечного устройства. Когда роутер и конечное устройство в зоне досягаемости координатора - то все работает отлично. Широковещательные сообщения получают все, и все могут отправлять на координатор. В WSN мониторе видим топологию сети "звезда".
Потом разносим устройства так, что конечное устройство выходит из зоны досягаемости координатора, и ставим между ними роутер. В WSN мониторе видим что устройства выстроились цепочкой, данные с конечного устройства координатор получает, но при отправке широковещательного сообщения координатором оно не доходит до конечного устройства... Нужны ли какие то специальные настройки или отличается ли обработка сообщения конечным устройством от координатора напрямую и при ретрансляции роутером?
ataradov
QUOTE (Arxi @ Jul 17 2014, 20:28) *
но при отправке широковещательного сообщения координатором оно не доходит до конечного устройства...
Покажите код инициализации запроса. Вероятнее всего не убрали запрос подтверждения.

QUOTE (Arxi @ Jul 17 2014, 20:28) *
Нужны ли какие то специальные настройки или отличается ли обработка сообщения конечным устройством от координатора напрямую и при ретрансляции роутером?
Нет, особых настроек не нужно.
Arxi
Да вроде убрал....Вот код:
Код
        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;

ataradov
QUOTE (Arxi @ Jul 17 2014, 21:39) *
NWK_OPT_BROADCAST_PAN_ID

Убрать, оно не для этого.
Arxi
Цитата(Taradov Alexander @ Jul 18 2014, 11:40) *
Убрать, оно не для этого.


Хм...откуда я это взял то....То есть достаточно выставить
Код
appNwkDataReq.dstAddr = 0xffff;

И все?
ataradov
QUOTE (Arxi @ Jul 17 2014, 21:43) *
Хм...откуда я это взял то....То есть достаточно выставить
CODE
appNwkDataReq.dstAddr = 0xffff;

И все?

Ага. И .options = 0.
Arxi
Цитата(Taradov Alexander @ Jul 18 2014, 11:44) *
Ага. И .options = 0.


Спасибо! Пойду пробовать.


Все попробовал...все работает как задумано! Еще раз спасибо за помощь)
Arxi
Еще вопрос возник...все работает, сообщения по цепочке передаются.
Рассмотрим вариант Сoordinator <---> Router_1 <----> Router_2.
Router_2 не находится в прямой видимости координатора, соответственно сообщения от router_2 в координатор приходят через Router_1. Но как понять что это сообщение от router_2, а не от Router_1?
Как я понимаю, при пересылке сообщения переменная
Код
uint64_t     extAddr;

подменяется адресом узла, от которого сообщения было получено? Как можно узнать реальный источник сообщения?
ataradov
QUOTE (Arxi @ Aug 21 2014, 19:37) *
подменяется адресом узла, от которого сообщения было получено? Как можно узнать реальный источник сообщения?


В WSNDemo appMsg.extAddr и appMsg.shortAddr заполняются на передающей стороне и нигде не подменяются.

А так же ind->srcAddr в appDataInd() содержит адрес отправителя не зависимо от начинки кадра.
Arxi
Цитата(Taradov Alexander @ Aug 22 2014, 09:42) *
В WSNDemo appMsg.extAddr и appMsg.shortAddr заполняются на передающей стороне и нигде не подменяются.

А так же ind->srcAddr в appDataInd() содержит адрес отправителя не зависимо от начинки кадра.


То есть получается сообщение не меняется при пересылке?
В описанной мной выше конфигурации сети сообщение от router_1 и router_2 координатор будет получать в том же виде, как если бы они оба были в зоне досягаемости координатора?
ataradov
QUOTE (Arxi @ Aug 21 2014, 20:07) *
То есть получается сообщение не меняется при пересылке?


Не меняется, конечно. AppMessage_t - это данные приложения, стек о них вообще ничего не знает и они могут быть какими угодно, в том числе не содержать никаких адресов.
Arxi
Цитата(Taradov Alexander @ Aug 22 2014, 10:10) *
Не меняется, конечно. 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;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.