This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2530Zigbee模块如何知道设备联网成功的?

Other Parts Discussed in Thread: CC2530

我用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
    }