|
|
|
LWMesh 1.2.1, Построение сети |
|
|
|
Jul 18 2014, 03:28
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 16-09-10
Пользователь №: 59 523
|
Добрый день! Возникла проблема с ретрансляцией широковещательных сообщений. Создал сеть из координатора, роутера и конечного устройства. Когда роутер и конечное устройство в зоне досягаемости координатора - то все работает отлично. Широковещательные сообщения получают все, и все могут отправлять на координатор. В WSN мониторе видим топологию сети "звезда". Потом разносим устройства так, что конечное устройство выходит из зоны досягаемости координатора, и ставим между ними роутер. В WSN мониторе видим что устройства выстроились цепочкой, данные с конечного устройства координатор получает, но при отправке широковещательного сообщения координатором оно не доходит до конечного устройства... Нужны ли какие то специальные настройки или отличается ли обработка сообщения конечным устройством от координатора напрямую и при ретрансляции роутером?
|
|
|
|
|
Jul 18 2014, 04:25
|
Профессионал
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202
|
QUOTE (Arxi @ Jul 17 2014, 20:28) но при отправке широковещательного сообщения координатором оно не доходит до конечного устройства... Покажите код инициализации запроса. Вероятнее всего не убрали запрос подтверждения. QUOTE (Arxi @ Jul 17 2014, 20:28) Нужны ли какие то специальные настройки или отличается ли обработка сообщения конечным устройством от координатора напрямую и при ретрансляции роутером? Нет, особых настроек не нужно.
|
|
|
|
|
Jul 18 2014, 04:39
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 16-09-10
Пользователь №: 59 523
|
Да вроде убрал....Вот код: Код 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;
Сообщение отредактировал Arxi - Jul 18 2014, 04:40
|
|
|
|
|
Jul 18 2014, 04:43
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 16-09-10
Пользователь №: 59 523
|
Цитата(Taradov Alexander @ Jul 18 2014, 11:40) Убрать, оно не для этого. Хм...откуда я это взял то....То есть достаточно выставить Код appNwkDataReq.dstAddr = 0xffff; И все?
|
|
|
|
|
Jul 18 2014, 04:44
|
Профессионал
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202
|
QUOTE (Arxi @ Jul 17 2014, 21:43) Хм...откуда я это взял то....То есть достаточно выставить CODE appNwkDataReq.dstAddr = 0xffff; И все? Ага. И .options = 0.
|
|
|
|
|
Jul 18 2014, 05:12
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 16-09-10
Пользователь №: 59 523
|
Цитата(Taradov Alexander @ Jul 18 2014, 11:44) Ага. И .options = 0. Спасибо! Пойду пробовать. Все попробовал...все работает как задумано! Еще раз спасибо за помощь)
|
|
|
|
|
Aug 22 2014, 02:37
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 16-09-10
Пользователь №: 59 523
|
Еще вопрос возник...все работает, сообщения по цепочке передаются. Рассмотрим вариант Сoordinator <---> Router_1 <----> Router_2. Router_2 не находится в прямой видимости координатора, соответственно сообщения от router_2 в координатор приходят через Router_1. Но как понять что это сообщение от router_2, а не от Router_1? Как я понимаю, при пересылке сообщения переменная Код uint64_t extAddr; подменяется адресом узла, от которого сообщения было получено? Как можно узнать реальный источник сообщения?
Сообщение отредактировал Arxi - Aug 22 2014, 02:37
|
|
|
|
|
Aug 22 2014, 03:07
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 16-09-10
Пользователь №: 59 523
|
Цитата(Taradov Alexander @ Aug 22 2014, 09:42) В WSNDemo appMsg.extAddr и appMsg.shortAddr заполняются на передающей стороне и нигде не подменяются.
А так же ind->srcAddr в appDataInd() содержит адрес отправителя не зависимо от начинки кадра. То есть получается сообщение не меняется при пересылке? В описанной мной выше конфигурации сети сообщение от router_1 и router_2 координатор будет получать в том же виде, как если бы они оба были в зоне досягаемости координатора?
|
|
|
|
|
Aug 22 2014, 03:11
|
Участник
Группа: Участник
Сообщений: 28
Регистрация: 16-09-10
Пользователь №: 59 523
|
Цитата(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;
Сообщение отредактировал Arxi - Aug 22 2014, 03:33
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|