CC2530Zigbee模块如何知道设备联网成功的?
我用ZIGBEE模块路由器连接协调器,当路由器连接上协调器后,是从哪里知道联网成功的?又是从哪里将联网指示灯端口直为高电平的?谢谢
路由器的启动过程代码按如下方式运行(预编译HOLD_AUTO_START)
main()->osal_init_system()->osalInitTasks()
->ZDApp_Init()
->ZDOInitDevice( ZDO_INIT_HOLD_NWK_START )
->ZDApp_NetworkInit()
->触发ZDAppTaskID的ZDO_NETWORK_INIT
->ZDO_StartDevice()
->NLME_NetworkDiscoveryRequest()
->网络发现成功
ZDO_NetworkDiscoveryConfirmCB()
->触发ZDAppTaskID的ZDO_NWK_DISC_CNF
->NLME_JoinRequest()
->网络加入成功 ZDO_JoinConfirmCB
->ZDApp_SendMsg()
->触发ZDAppTaskID的ZDO_NWK_JOIN_IND
->ZDApp_ProcessNetworkJoin()
->osal_set_event( ZDAppTaskID, ZDO_STATE_CHANGE_EVT )
->ZDO_UpdateNwkStatus()
.......................................................
请问您现在的联网指示灯是哪个IO口?您可以在您现在的程序中查找该IO口的相关代码。
Susan Yang的回答很专业,但是忽略了一个问题。
提问者的积分只有180分,可以看出他应该是刚来TI论坛不久,从他的问的问题的标题来看,他问的是CC2530模块,而非协议栈,说明他基本上对协议栈不了解,或者就是买的别人的模块。此外,他说的是联网,而不是大家都说的组网,可以基本确定,他是一个全新的新手。
所以,正确的答案是:全局搜索:“case ZDO_STATE_CHANGE:”如下:
case ZDO_STATE_CHANGE:
GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
if ( (GenericApp_NwkState == DEV_ZB_COORD) ||
(GenericApp_NwkState == DEV_ROUTER) ||
(GenericApp_NwkState == DEV_END_DEVICE) )
{
// do something
}