По ходу своих разработак наткнулся на такую проблему:
Не приходят уведомления в ZDO_MgmtNwkUpdateNotf о том что координатор или роутер недоступен.
Расшифровка:
Координатор:
ставлю брейкпоинт в точку if(...)....
Код
void ZDO_MgmtNwkUpdateNotf(ZDO_MgmtNwkUpdateNotf_t * nwkParams) {
if (ZDO_NETWORK_LOST_STATUS==nwkParams->status) { // Network is lost/left
startFlashTimer();
appState=APP_NETWORK_STARTING_STATE; // Switch application state
SYS_PostTask(APL_TASK_ID);
}
}
И жду чтож такое получится.
Перегружаю программно девайс, а в брейкпоинт не заходит ваще никогда! Ни при установке сети, ни при потери связи (координатор в коропку жилезную засовываю)
При этом смотрю раз в секунду (по таймеру) чтож у меня с соседями:
Код
static void RssiLqiTimer(void) {
ZDO_GetNeibAmount_t NeibAmount;
ZDO_GetNeibAmount(&NeibAmount);
ZDO_NwkStatus_t NwkSt;
NwkSt=ZDO_GetNwkStatus();
NodeAddr_t parentAddr;
ZDO_GetParentAddr(&parentAddr);
HAL_StartAppTimer(&delayRssiLqiTimer);
if(NeibAmount.routersAmount==0x00) {
appToggleLed(NETWORK_LED);
}
}
А с соседями все нормально:
нетворк статус NwkSt = ZDO_IN_NETWORK_STATUS
в parentAddr - всякая ерунда (из чего я делаю вывод о том что координатор и роутер не родственники)
NeibAmount.routerAmount = 0x01; (получается он координатора сюда считает -в роутеры)
NeibAmount.childrenAmount = 0x00;
Как только связь рвется:
NeibAmount.routerAmount = 0x00; (что вообщем то верно. логично. и у меня лампочка моргать начинает)
Как только связь снова восстанавливается:
NeibAmount.routerAmount = 0x01; (не сразу , ну , секунду - две)
А загвоздка в том, что в ZDO_MgmtNwkUpdateNotf нифига не приходит (см выше)
Примерно таже ситуевина на координаторе.
Тока там хотяб установка сети обозначатеся в ZDO_MgmtNwkUpdateNotf точно не помню с каким статусом.
А вот исчезновение и появление роутера не обозначается.
Ну а вообще сеть налаживается сама, проблем нет

.