- 浏览: 591382 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (365)
- Java 基础知识(笔试面试有用) (35)
- SQL 相关 (11)
- Oracle笔试 (1)
- Java 笔试面试 (11)
- LINUX (12)
- ExtJS (21)
- Javascript (17)
- WebGIS (2)
- 软件工程 (3)
- 数据库 (17)
- 项目管理 (63)
- 工作流 (2)
- 计算机网络 (3)
- ZigBee技术及应用 (24)
- 单片机(AVR Studio) (7)
- 项目人力资源管理 (3)
- 项目管理高级知识 (4)
- JAVA技术 (12)
- 项目管理中的概念 (3)
- SQL SERVER (1)
- C++ (1)
- C/C++编程经验 (12)
- C和C++面试笔试题 (12)
- 其他IT技术笔试面试 (6)
- 名企笔试面试集锦 (16)
- 非技术 (10)
- C#相关 (1)
- Matlab相关 (2)
- 计算机专业课相关 (2)
- Web Service (1)
- Excel 使用 (1)
- PhotoShop相关 (4)
- ASP 相关 (2)
- android (1)
- Java WEB 相关 (1)
- web 安全相关 (7)
- 网络安全 (1)
- IBatis (1)
- web 开发技巧 (2)
- css 相关 (1)
- Ruby相关 (2)
- 生活 (3)
- 操作系统安全相关 (6)
- 操作系统相关 (1)
- PHP相关 (3)
- 开发经验 (12)
- Redis (1)
最新评论
美国密西西比州立大学的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。直到aps为idle状态才进行数据业务填充,并调用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()返回收到消息的信号强度
aplGetRxCluster()返回簇号
aplGetRxSrcEp()返回源端点
aplGetRxSADDR()返回源端点的短地址
aplGetRxMsgLen()返回消息长度
aplGetRxMsgData()返回消息数据的指针
aplGetRxRSSI()返回收到消息的信号强度
而后用户回调函数usrRxPacketCallback()将被调用。这个函数将使用用户数据结构保存数据,设置已收到数据的标志位。此函数结束后消息数据的指针将会被释放,所以在函数结束之前要将数据保存以防止下一个包将数据覆盖掉。
本文出自 “bluefish” 博客,请务必保留此出处http://bluefish.blog.51cto.com/214870/163424
发表评论
-
h文件和c文件中变量的关系
2013-01-22 19:15 753一般的,在h中定义好变量。在c文件中可以直接引用,不过在c文件 ... -
802.15.4 MAC 层 一些参数的说明
2012-11-16 11:28 1412802.15.4 MAC 层可以用周期性的发送信标来 ... -
C 语言嵌入式开发 经验
2012-10-31 18:56 791(1) #include <> "&qu ... -
802.15.4的帧格式
2012-10-31 15:15 2539帧控制字段 ... -
Each undeclared identifier is reported only once for each function it appears in
2012-10-15 16:32 7989Each undeclared identifier is r ... -
Zigbee MAC层 程序框架
2012-10-09 09:55 1599macFSM : phyFSM() ===== ... -
802.15.4
2012-10-02 16:14 1365IEEE 802.15.4网络是指在一个POS内使用相同无线信 ... -
802.15.4标准
2012-09-27 09:35 1056附件以下是 802.15.4 标准协议! -
CSMA 简介
2012-09-27 09:05 1975CSMA/CD CSMA/CD(Carri ... -
Zigbee MAC层 服务功能描述
2012-08-24 10:22 2601MAC层管理服务 一: 关联原语 ... -
Zigbee中的GTS-02
2012-08-20 11:18 1058(5)GTS重分配 撤销GTS后可能导致超帧变成零散的 ... -
Zigbee中的GTS-01
2012-08-17 11:11 1436GTS的分配和管理 ... -
CSMA/CA
2012-07-28 09:11 1031非坚持的CSMA:线路忙,等待一段时间,再侦听 ... -
Zigbee 之mac层之 mac_pib(一)
2012-07-26 12:35 1467mac_pib 的结构如下: typede ... -
超帧,信标帧
2012-06-28 19:26 3017信标帧能够实现协调点与周围节点间的同步并对超帧结构进行相应的描 ... -
CSMA/CA算法流程
2012-06-19 20:33 7820我们知道总线型局域网在MAC层的标准协议是CSMA/CD ... -
ZigBee组网机制以及数据的发送和接收
2012-04-15 21:00 2053Zigbee是一种新型的短距离无线通信技术。其特点是低功耗,低 ... -
无线龙zigbee2004精简版试验总结
2012-04-10 14:58 1746花了很长时间看代码,中间有限状态机部分还没有看懂,目前只 ... -
基于ZigBee的WPAN网络配置应用
2012-04-10 09:42 1424ZigBee是一种新兴的短距离、低速率、低成本、低功耗的 ... -
zigbee学习(一)总体概况
2012-04-10 09:32 1392zigbee学习zigbee设备模型:FFD(具有完整功能的设 ...
相关推荐
它的英文直译名为:Zigbee-subset/IEEE 802.15.4多平台协议栈。其作者为密西西比州立大学电气与计算机工程系的一名副教授——罗伯特里斯。它可以供科学教育免费使用,我翻译的这个版本只实现了静态树态路由,而且...
成都无线龙的zigbee协议栈源代码,能够在cc2430上跑,是学习zigbee的好资源
msstatePAN,zigbee 精简版协议栈,CC2430,由Dr. Robert B. Reese编写,全部是C语言程序,对想了解ZIGBEE底层的人有很大的帮助。
zigbee技术是一种短距离的无线传输方式,现在已被人们广泛利用,在组建无线网络的时候基本由协调器,路由器,终端节点组成
基于精简协议栈的ZigBee网络节点研究 基于精简协议栈的ZigBee网络节点研究 基于精简协议栈的ZigBee网络节点研究
超精简版zigbee协议栈 目标平台: atmega128+CC2420, 硬件原理图及PCB版图见hardware文件夹 开发工具: WinAvr提供gcc编译器,AVRStudio用来建立工程 功能: 1 支持beacon寻找网络 2 Coord建立网络,RFD加入网络,...
IAREW8051基于ZigBee802.15.4的CC2430CC2431的精简版协议栈全部C51源代码
ZigBee协议栈的精简源码,测试通过
Z-stack 协议栈的精简版本,baisic RF,只有4KB却能实现正常的组网全部功能,并具备一定的安全性!
无线传输节点采用了 TI公司的单芯片 CC2430 +低功耗功放 CC2591 解决方案 ,并修改和移植了 ZigBee精简协议栈代码 ,再编写水质监测系统的应用程序和相关驱动程序。试验结果表明 ,该系统可扩展性强 ,节点功耗低 ,实时...
ZigBee精简协议栈简介:美国密西西比州立大学的Robert Reese教授出于教学、科研目的开发出一套精简版(subset)ZigBee协议栈。标准协议栈和精简协议栈的功能对比如表1所列,可以看出,精简协议栈实现了ZigBee的主要...
无线传输节点采用了TI公司的单芯片CC2430+低功耗功放CC2591解决方案,并修改和移植了ZigBee精简协议栈代码,再编写水质监测系统的应用程序和相关驱动程序。试验结果表明,该系统可扩展性强,节点功耗低,实时性能够...
实验结果验证了网络的连通性、精简TCWIP协议栈实现的可行性以及面向交通信息采集组网及监控的可实现性。理论和实验说明,在交通信息采集传感器网络的大规模组网及远程监控中,所述IP互连方法是可行的。
网关设计是无线传感器网络系统的关键一环,根据液压支架无线监测系统具体要求,以自编写的精简UDP/IP协议栈为基础,提出了基于S3C44B0X的Zigbee协议与以太网协议转换的网关设计方案。本系统没有植入操作系统,整个程序...
实验结果验证了网络的连通性、精简TCP/IP协议栈实现的可行性以及面向交通信息采集组网及监控的可实现性。理论和实验说明,在交通信息采集传感器网络的大规模组网及远程监控中,所述IP互连方法是可行的。