`
wangleide414
  • 浏览: 591382 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ZigBee精简协议栈学习

 
阅读更多


美国密西西比州立大学的Robert Reese教授出于教学、科研目的开发出一套精简版(subset)ZigBee协议栈。
 
APS的状态:
typedef enum _APS_STATE_ENUM
{
  APS_STATE_IDLE,
  APS_STATE_COMMAND_START,
  APS_STATE_GENERIC_TX_WAIT,
  APS_STATE_NWK_PASSTHRU_WAIT,
  APS_STATE_INDIRECT_GETDST,
  APS_STATE_INDIRECT_TX,
#ifdef LRWPAN_COORDINATOR
  APS_STATE_INJECT_INDIRECT,
#endif
  APS_STATE_ACK_SEND_START,
  APS_STATE_INDIRECT_TX_WAIT,
  APS_STATE_INJECT_LOOPBACK,
  APS_STATE_INDIRECT_LOOPBACK
 } APS_STATE_ENUM;
从程序可以看出,除了APS_STATE_IDLE其余都是busy状态。
 
APL层的服务调用【对外功能函数】:
函数
功能
aplSendMSG
发送消息
aplSendEndDeviceAnnounce (saddr)
发送终端设备宣告
aplSendNodeInfo (saddr)
发送节点信息
aplSendAlarm (saddr,mde)
发送警告
aplPingParent ()
查询父节点连接状态
aplPingNode (saddr)
查询某个节点的连接状态
aplFormNetwork()
协调器形成网络
aplJoinNetwork()
尝试接入网络
aplRejoinNetwork()
尝试再次接入网络
这里的函数(或者宏)都要先循环调用apsBusy()检查aps是否为idle状态,如果不是就调用apsFSM。直到apsidle状态才进行数据业务填充,并调用apsDoService处理
#define apsDoService() \
   a_aps_service.status = LRWPAN_STATUS_APS_INPROGRESS;\
   apsState = APS_STATE_COMMAND_START;\
   apsFSM();
 
APL层的访问及设置调用【对内功能函数】:
                  函数
                  功能
aplInit()
初始化协议栈
aplShutdown
关闭协议栈
aplWarmstart
唤醒协议栈
apsGenTSN()
产生事务对列号
aplGetMyShortAddress()
获取节点的短地址
aplGetParentLongAddress()
获取父节点的长地址
aplGetParentShortAddress()
获取父节点的短地址
aplSetMacMaxFrameRetries(x)
设置MAC层帧重传的最大次数
aplSetApsMaxFrameRetries(x)
设置APS层帧重传的最大次数
aplIsUsrBufferFree()
最后一个消息是否被拷贝
aplMacTicksToUs
MAC滴答为微秒
 
对于APS(应用支持子层)这一层来说,apsFSM函数是整个的主角,在asp.c文件中定义的函数几乎都为这个函数所调用。协议栈的每一层都有自己的有限状态机(FSM)以追踪要进行的操作
 
如果节点作为协调器(coordinator),那么需要定义LRWPAN_COORDINATOR;而如果节点作为路由器(router)则需要定义LRWPAN_ROUTER;如果两者都没有定义,将作为RFD节点。协调器节点形成网络,然后进入一个无限循环并调用apsFSM()运行协议栈。调用aplFormNetwork()服务后调用函数aplGetStatus(),如果返回了LRWPAN_SUCCESS则表示服务调用成功。路由器节点通过调用aplJoinNetwork()运行协议栈。
 
协议栈使用以下APL访问函数接收数据包。
aplGetRxDstEp()返回目的端点
aplGetRxCluster()
返回簇号
aplGetRxSrcEp()
返回源端点
aplGetRxSADDR()
返回源端点的短地址
aplGetRxMsgLen()
返回消息长度
aplGetRxMsgData()
返回消息数据的指针
aplGetRxRSSI()
返回收到消息的信号强度
 
  而后用户回调函数usrRxPacketCallback()将被调用。这个函数将使用用户数据结构保存数据,设置已收到数据的标志位。此函数结束后消息数据的指针将会被释放,所以在函数结束之前要将数据保存以防止下一个包将数据覆盖掉。

本文出自 “bluefish” 博客,请务必保留此出处http://bluefish.blog.51cto.com/214870/163424

分享到:
评论

相关推荐

    Zigbee精简协议栈中文使用说明

    它的英文直译名为:Zigbee-subset/IEEE 802.15.4多平台协议栈。其作者为密西西比州立大学电气与计算机工程系的一名副教授——罗伯特里斯。它可以供科学教育免费使用,我翻译的这个版本只实现了静态树态路由,而且...

    无线龙的zigbee精简协议栈完整源代码

    成都无线龙的zigbee协议栈源代码,能够在cc2430上跑,是学习zigbee的好资源

    zigbee 精简版协议栈 ,CC2430

    msstatePAN,zigbee 精简版协议栈,CC2430,由Dr. Robert B. Reese编写,全部是C语言程序,对想了解ZIGBEE底层的人有很大的帮助。

    zigbee2006精简协议栈

    zigbee技术是一种短距离的无线传输方式,现在已被人们广泛利用,在组建无线网络的时候基本由协调器,路由器,终端节点组成

    基于精简协议栈的ZigBee网络节点研究

    基于精简协议栈的ZigBee网络节点研究 基于精简协议栈的ZigBee网络节点研究 基于精简协议栈的ZigBee网络节点研究

    超精简版zigbee协议栈

    超精简版zigbee协议栈 目标平台: atmega128+CC2420, 硬件原理图及PCB版图见hardware文件夹 开发工具: WinAvr提供gcc编译器,AVRStudio用来建立工程 功能: 1 支持beacon寻找网络 2 Coord建立网络,RFD加入网络,...

    IAREW8051基于ZigBee802.15.4的CC2430CC2431的精简版协议栈全部C51源代码

    IAREW8051基于ZigBee802.15.4的CC2430CC2431的精简版协议栈全部C51源代码

    CC2430ZStack.rar_2430_ZigBee 协议_cc2430_zigbee协议栈

    ZigBee协议栈的精简源码,测试通过

    TI 精简协议栈 BASIC RF

    Z-stack 协议栈的精简版本,baisic RF,只有4KB却能实现正常的组网全部功能,并具备一定的安全性!

    基于 ZigBee 技术的水质监测系统

    无线传输节点采用了 TI公司的单芯片 CC2430 +低功耗功放 CC2591 解决方案 ,并修改和移植了 ZigBee精简协议栈代码 ,再编写水质监测系统的应用程序和相关驱动程序。试验结果表明 ,该系统可扩展性强 ,节点功耗低 ,实时...

    cc2530使用的masstatePAN源码

    ZigBee精简协议栈简介:美国密西西比州立大学的Robert Reese教授出于教学、科研目的开发出一套精简版(subset)ZigBee协议栈。标准协议栈和精简协议栈的功能对比如表1所列,可以看出,精简协议栈实现了ZigBee的主要...

    基于ZigBee技术的水质监测系统* (2009年)

    无线传输节点采用了TI公司的单芯片CC2430+低功耗功放CC2591解决方案,并修改和移植了ZigBee精简协议栈代码,再编写水质监测系统的应用程序和相关驱动程序。试验结果表明,该系统可扩展性强,节点功耗低,实时性能够...

    一种交通信息采集传感器网络的IP互连方法.pdf

    实验结果验证了网络的连通性、精简TCWIP协议栈实现的可行性以及面向交通信息采集组网及监控的可实现性。理论和实验说明,在交通信息采集传感器网络的大规模组网及远程监控中,所述IP互连方法是可行的。

    液压支架无线监测系统中嵌入式网关的设计

    网关设计是无线传感器网络系统的关键一环,根据液压支架无线监测系统具体要求,以自编写的精简UDP/IP协议栈为基础,提出了基于S3C44B0X的Zigbee协议与以太网协议转换的网关设计方案。本系统没有植入操作系统,整个程序...

    一种交通信息采集传感器网络的IP互连方法

    实验结果验证了网络的连通性、精简TCP/IP协议栈实现的可行性以及面向交通信息采集组网及监控的可实现性。理论和实验说明,在交通信息采集传感器网络的大规模组网及远程监控中,所述IP互连方法是可行的。

Global site tag (gtag.js) - Google Analytics