1-13 扩展提高3 建立网络、加入网络流程分析

 建立网络、加入网络流程分析

   协调器节点:在1-10  实验8 网络通信实验2 组播通信中

  1.  while(MSGpkt)  
  2.    {  
  3.      switch(MSGpkt->hdr.event)  
  4.     {  
  5.     case ZDO_STATE_CHANGE:  //建立网络后,设置事件     
  6.       GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//???????  
  7.       if(GenericApp_NwkState==DEV_ZB_COORD)//把该节点已初始化为协调器,则执行下面的  
  8.       {  
  9.        HalLedBlink(HAL_LED_2,0,50,500);    //LED2 闪烁   
  10.        aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group);  //建立网路后,加入组。  
  11.        osal_start_timerEx(GenericApp_TaskID,SEND_TO_ALL_EVENT,5000);  
  12.       }  
  路由器节点: 在1-10  实验8 网络通信实验2 组播通信中

  1.  while(MSGpkt)  
  2.     {  
  3.       switch(MSGpkt->hdr.event)  
  4.       { 
  5.     case ZDO_STATE_CHANGE:   //加入网络后,加入族中  
  6.       GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型   
  7.       if(GenericApp_NwkState==DEV_ROUTER)  
  8.       {  
  9.         aps_AddGroup(GENERICAPP_ENDPOINT,&GenericApp_Group); //加入组中  
  10.       }  
  11.       break;  
终端节点:1-5   实验4   串口通信2

  1.     while(MSGpkt)  
  2.     {  
  3.       switch(MSGpkt->hdr.event)  
  4.       {  
  5.     case ZDO_STATE_CHANGE:  
  6.       GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型  
  7.       if(GenericApp_NwkState==DEV_END_DEVICE)  
  8.       {  
  9.         //当中断节点加入网络后使用osal_set_envent()函数设置SEND_DATA_EVENT事件,当事件发生时,执行事件处理函数  
  10.         osal_set_event(GenericApp_TaskID,SEND_DATA_EVENT);//??????????????????????????  
  11.       }  
  12.       break

而上面的 GenericApp_NwkState是devStates_t GenericApp_NwkState;这样定义的,用于//保存节点状态   

typedef enum
{
  DEV_HOLD,               // Initialized - not started automatically
  DEV_INIT,               // Initialized - not connected to anything
  DEV_NWK_DISC,           // Discovering PAN's to join
  DEV_NWK_JOINING,        // Joining a PAN
  DEV_NWK_REJOIN,         // ReJoining a PAN, only for end devices
  DEV_END_DEVICE_UNAUTH,  // Joined but not yet authenticated by trust center
  DEV_END_DEVICE,         // Started as device after authentication
  DEV_ROUTER,             // Device joined, authenticated and is a router
  DEV_COORD_STARTING,     // Started as Zigbee Coordinator
  DEV_ZB_COORD,           // Started as Zigbee Coordinator
  DEV_NWK_ORPHAN          // Device has lost information about its parent..
} devStates_t;
刚开始时,都是在GenericApp_Init()函数中将 GenericApp_NwkState=DEV_INIT。然后再通过哪几步转到为上面三种情况DEV_ZB_COORD、DEV_ROUTER、DEV_END_DEVICE中的一种。

TI协议栈是半开源的,网络层代码并不开源。运行于端口0的ZDO负责应用层用户程序和网络层之间的通信。

网络层的建立过程是由ZDO来实现的。网络建立后应用层会接受到ZDO_STATE_CHANGE消息。使用下面语句就可以读取当前网络的状态。

GenericApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//读取节点的设备类型  

状态可能是DEV_ZB_COORD、DEV_ROUTER、DEV_END_DEVICE中的一种,或其他。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gdliweibing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值