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

协调器节点:在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;这样定义的,用于//保存节点状态

  1. typedef enum
  2. {
  3. DEV_HOLD,               // Initialized - not started automatically
  4. DEV_INIT,               // Initialized - not connected to anything
  5. DEV_NWK_DISC,           // Discovering PAN's to join
  6. DEV_NWK_JOINING,        // Joining a PAN
  7. DEV_NWK_REJOIN,         // ReJoining a PAN, only for end devices
  8. DEV_END_DEVICE_UNAUTH,  // Joined but not yet authenticated by trust center
  9. DEV_END_DEVICE,         // Started as device after authentication
  10. DEV_ROUTER,             // Device joined, authenticated and is a router
  11. DEV_COORD_STARTING,     // Started as Zigbee Coordinator
  12. DEV_ZB_COORD,           // Started as Zigbee Coordinator
  13. DEV_NWK_ORPHAN          // Device has lost information about its parent..
  14. } 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);//读取节点的设备类型

读取cc2530节点的设备类型、协调器、路由器、终端。的更多相关文章

  1. 001——CC2530——终端或者路由器传输到不同多协调器上

    (一)参考文献:协调器太多,cc2530的终端或则路由器选择性加入协调器的方法 (二)频道和ID一样 进入协调器和终端和路由器的两个程序,找到Tools中的f8wConfig.cfg文件.修改默认PA ...

  2. 【分布式协调器】Paxos的工程实现-cocklebur简介(一)

    初识分布式协调器 分布式协调器的“协调”二字让人摸不到头脑,怎么就协调了,用的着协调吗?实际上这个东西在之前就是为了提供分布式锁服务而设计的,伟大的google公司发明了chubby,雅虎随后也推出了 ...

  3. 中小研发团队架构实践之分布式协调器.Net版ZooKeeper

    原文:中小研发团队架构实践之分布式协调器.Net版ZooKeeper 一.ZooKeeper是什么  Apache ZooKeeper是由Apache Hadoop的子项目发展而来,于2010年11月 ...

  4. tensorflow中协调器 tf.train.Coordinator 和入队线程启动器 tf.train.start_queue_runners

    TensorFlow的Session对象是支持多线程的,可以在同一个会话(Session)中创建多个线程,并行执行.在Session中的所有线程都必须能被同步终止,异常必须能被正确捕获并报告,会话终止 ...

  5. SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC)

    原文:SqlServer & Windows 可更新订阅立即更新启用分布式事务协调器(MSDTC) 在可更新订阅中,在订阅设置更新方法,将 "排队更新" 设置为 " ...

  6. C#读取xml节点数据方法小结

    本文实例总结了C#读取xml节点数据的方法.分享给大家供大家参考.具体如下: 第一种: 使用XPath XML的路径我配置在web.config 的appSettings节点下 <appSett ...

  7. 数据库的应用——直接从内存中读取osg节点 (转)

    数据库的应用——直接从内存中读取osg节点 目的:要从数据库中读取节点数据到osg. 一开始的方法是这样的,每当我要添加一个数据库中的节点数据时,首先把它读取到内存中,然后写入一个文件,最后再次从文件 ...

  8. Dom4j使用Xpath语法读取xml节点

    我们可以使用Xpath的语法来轻易的读取xml的某个节点[类似于jQuery的选择器]: 使用Xpath语法需要添加新的jaxen-1.1-beta-7.rar 这个jar包 dom4j完整jar包我 ...

  9. 读取本地HTML的小说阅读器应用源码项目

    该源码是一个不错的读取本地HTML的小说阅读器,读取本地HTML的小说阅读器,并且源码也比较简单的,非常适合我们的新手朋友拿来学习,有兴趣的朋友研究下. 源码下载: http://code.662p. ...

随机推荐

  1. leetcode24,交换链表相邻的节点

    Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2-& ...

  2. hdu_5753_Permutation Bo(找规律)

    题目连接:hdu_5753_Permutation Bo 题意: 给你一个有n个数的数列c1~cn,h1~hn为1~n的排列,求ci[hi>hi-1  and  hi>hi+1]的期望和. ...

  3. FUSE

    FUSE is particularly useful for writing [ vritual ] file system. Unlike traditional filesystem that ...

  4. 避免IE执行AJAX时,返回JSON出现下载文件

    <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.conv ...

  5. BZOJ3036绿豆蛙的归宿

    BZOJ3036绿豆蛙的归宿 锲下陟凝 褰宓万 郝瓦痕膳 叶诙摞 А知π剧 椐猊∫距 屠缲佗 ゲ蕖揪 俜欧彖鹤 磲砩ほ #琛扶 觅电闸ス 捆鳢げ 浜窠 魂睨"烁 蕞滗浼 洒ヂ跪 ...

  6. QML Flipable、Flickable和状态与动画 下篇

    本文介绍的是Flickable和状态与动画,我们以前接触过QML相关的内容,那么本文介绍的内容就很明了了.先来看内容. AD: Flickable和状态与动画 下篇是本节要介绍的内容,Flickabl ...

  7. python socketserver实现客户端多并发

    直接看代码 server #!/usr/bin/env python # -*- coding:utf-8 -*- import socketserver import subprocess clas ...

  8. SQL添加表字段以及SQL查询表,表的所有字段名

    通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smalli ...

  9. linux fork()函数

    C语言编程创建函数fork() 执行解析 | 浏览:1842 | 更新:2013-04-22 15:12 | 标签:c语言 概述 最近在看进程间的通信,看到了fork()函数,虽然以前用过,这次经过思 ...

  10. MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法

    在这里主要讲解一下MySQL.SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法. 可能会有人说这些网上都有,但我的主要目的是把这些知识通过我实际的应 ...