zigbee协议,源代码
竭诚为您提供优质文档/双击可除zigbee协议,源代码篇一:揭开zigbee20xx协议栈z-stack的”开源“面纱揭开zigbee20xx协议栈z-stack的”开源“面纱(20xx-11-2216:06)分类:zigbee技术学习我们都在说zigbee20xx协议栈z-stack是开源的,但是这个协议栈到底是全部开源的,还是只是开源一部分,让我们来揭开它的“开源”面纱?z-stack是在20xx年4月,德州仪器推出业界领先的zigbee协议栈,z-stack符合zigbee20xx规范,支持多种平台,z-stack 包含了网状网络拓扑的几近于全功能的协议栈,在竞争激烈的zigbee领域占有很重要地位。
配合osal完成整个协议栈的运行。
z-stack只是zigbee协议的一种具体的实现,我们要澄清的是zigbee不仅仅有z-stack这一种,也不能把z-stack 等同于zigbee20xx协议,现在也有好几个真正开源的zigbee协议栈,例如:msstatepan协议栈,freakz协议栈,这些都是zigbee协议的具体实现,而且是全部真正的开源的,它们的所有源代码我们都可以看到,而z-stack中的很多关键的代码是以库文件的形式给出来,也就是我们只能用它们,而看不到它们的具体的实现。
那下面我们就以z-stack1.4.3-1.2.0看看它的组织架构,那些功能是开源的,那些是以库文件的形式提供给我们的。
我们利用z-stack开发应用,只能知道怎么做和做什么也就是“how”和“what”,而不能准确的知道“为什么”,“why”.我们也可以通过真正这些开源的zigbee协议栈了解为什么。
我们可以从ti的官方网站下载最新的协议栈,/zigbee 我这里的是zigbee20xx版本为版本的。
下载完以后我们可以点击exe文件进行安装,默认会在c盘的根目录下建立texasinstruments目录,该目录下面的子目录就是安装z-stack的文件。
下面的这个图就是z-stack协议栈的目录结构,根目录下有一个gettingstartedguidecc2430.pdf文件,是安装卸载协议栈的说明文件,另外三个文件夹分别是documentscomponents和project。
1.documentsdocuments文件夹包含了对整个协议栈进行说明的所有文档信息,下面有很多的pdF格式的文档,内容比较多,不过也无需全部的细读,我们可以把它们当做参考手册,根据需要来阅读。
ponentscomponents文件夹是z-stack协议栈的各个功能部件的实现,本文件夹下包含的子目录如下:1)hal文件夹为硬件平台的抽象层2)mac文件夹包含了802.15.4物理协议的实现说需要代码文件的头文件,由于ti公司处于某种考虑,这部分并没有给出具体的源代码,而是以库文件的形式存在.\projects\zstack\libraries文件夹给出3)mt文件夹包含了为系统添加在电脑上有z-tools调试的功能所需要的源文件4)osal包含了操作系统抽象层所需要的文件5)service文件夹保护了z-stack提供的两种服务:寻址服务和数据服务所需要的文件6)stack文件夹是components文件夹最核心的部分,是zigbee协议栈具体实现部分,在在其下有分为了af(应用框架),nwk(网络层),sapi(简单应用接口)、sec(安全)、sys(系统头文件),zcl(zigbee簇库),zdo(zigbee设备对象)等7个文件夹。
7)zmac文件夹包含了z-stackmac导出层文件。
还有一个project目录,该目录下包含了用于z-stack功能演示的各个项目的例子。
可供开发者们参考。
从上面我们可以看到其中核心部分的代码都是编译好的,以库文件的形式给出的,比如安全模块,路由模块,和mesh自组网模块。
如果要获得这部分的源代码可以向ti购买,可能花费不菲,可要大几万人民币。
ti所谓的“开源”只是提供给我们一个平台,开发者可以在上面做应用而已,而绝不是我们通常理解的开源。
也就我们在下载后源代码后,有些函数我们根本无法查看到它们的源代码的原因。
现在ti 公司提供的cc2480芯片,已经把这个协议栈固化到了硬件中,我们只需要掌握几个简单的api就可以完成基本的应用开发。
现在也有公司开发出了基于at指令集的zigbee协议栈,更方便开发了。
在前面也提到过一些真正开源的zigbee协议栈,不过这些协议栈没有大的商业公司的支持,开发升级方面,性能方面和ti公司的还是有很大的差距,这里就简单的介绍几个:(1)msstatepan协议栈msstatepan协议栈是由密西西比大学的R.Reese教授为广大无线技术爱好者开发的精简版zigbee协议栈,基于标准c语言编写,基本具备了zigbee协议标准所规定的功能,最新版本为V0.2.6,该版本支持多种开发平台,包括picdemz、cc2430评估板、msp430+cc2420(tmote)以及win32虚拟平台。
源代码是开放的,整个协议栈是基于状态机(Fsm)实现的。
如果你的程序构架不是基于操作系统的,有限状态机应该是一个很好的选择。
而且os (operatingsystem)中进程的状态也是个各个状态间的切换。
该协议栈的网站地址如下/(3)tinyos:tinyos是ucberkeley(加州大学伯克利分校)开发的开放源代码操作系统,专为嵌入式无线传感网络设计,操作系统基于构件(component-based)的架构使得快速的更新成为可能,而这又减小了受传感网络存储器限制的代码长度。
tinyos的构件包括网络协议、分布式服务器、传感器驱动及数据识别工具。
它只是一个操作系统,不过现在已经成立了tinyoszigbeeworkinggroup已经开始设计开源的zigbee。
非常值得我们的期待。
下载地址如下:http:///篇二:zigbee数据的发送和接收数据的发送和接收一、数据的发送在zstack20xx的协议栈中,我们只需调用函数aF_dat }addr;afaddrmode_taddrmode;//传送模式byteendpoint;//端点号}afaddrtype_t;2、端点描述符endpointdesc_ttypedefstruct{byteendpoint;//端点号byte*task_id;//那一个任务的端点号simpledescriptionFormat_t*simpledesc;//简单的端点描述afnetworklatencyReq_tlatencyReq;}endpointdesc_t;3、简单描述符simpledescriptionFormat_ttypedefstruct{byteendpoint;//epuint16appprofid;//应用规范iduint16appdeviceid;//特定规范id的设备类型byteappdevVer:4;//特定规范id的设备的版本byteReserved:4;//aF_V1_suppoRtusesforappFlags:4.byteappnuminclusters;//输入簇id的个数cid_t*pappinclusterlist;//输入簇id的列表byteappnumoutclusters;//输出簇id的个数cid_t*pappoutclusterlist;//输出簇id的列表}simpledescriptionFormat_t;4、簇idcidclusterid--具体应用串id5、发送选项options发送选项有如下选项#defineaF_FRagmented0x01#defineaF_ack_Request0x10#defineaF_discV_Route0x20#defineaF_en_secuRity0x40#defineaF_skip_Routing0x80其中aF_ack_Request为发送后需要接收方的确认6、半径、条数radius传输跳数或传输半径,默认值为10数据发送模式说明:在协议栈数据发送模式有以下几种:单播、组播、广播和直接发送四种模式。
广播发送广播发送可以分为三种,如果想使用广播发送,则只需将dstaddr->addrmode设为addrbroadcast,dstaddr->addr->shortaddr设置为相应的广播类型即可。
具体的定义如下:nwk_bRoadcast_shoRtaddR_deVall(0xFFFF)——数据包将被传送到网络上的所有设备,包括睡眠中的设备。
对于睡眠中的设备,数据包将被保留在其父亲节点直到查询到它,或者消息超时。
nwk_bRoadcast_shoRtaddR_deVRxon(0xFFFd)——数据包将被传送到网络上的所有接收机的设备(Rxonwhenidle),也就是说,除了睡眠中的所有设备。
nwk_bRoadcast_shoRtaddR_deVzczR(0xFFFc)——数据包发送给所有的路由器,包括协调器。
组播发送如果设备想传输数据到某一组设备,那么只需将dstaddr->addrmode设为addrgroup,dstaddr->addr->shortaddr设置为相应的组id即可。
代码如下://setupfortheflashcommandsdestinationaddress-group1sampleapp_Flash_dstaddr.addrmode=(afaddrmode_t)afad drgroup;sampleapp_Flash_dstaddr.endpoint=sampleapp_endpoint; sampleapp_Flash_dstaddr.addr.shortaddr=sampleapp_Flash_gRoup;根据上面代码的配置,然后使用aF_dataRequest()函数来进行组播发送。
单播发送单播发送需要知道目标设备的短地址,需要将dstaddr->addrmode设为addr16bit,dstaddr->addr->shortaddr设置为目标设备的短地址即可。
代码如下:sampleapp_Flash_dstaddr.addrmode=(afaddrmode_t)afad dr16bit;sampleapp_Flash_dstaddr.endpoint=sampleapp_endpoint;sampleapp_Flash_dstaddr.addr.shortaddr=0x00;根据上面代码的配置,然后使用aF_dataRequest()函数来进行点对点发送。
ZigBee源码程序及解释
协议栈无线透传编程原理:第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络//第一步:Z-Stack 由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统int main( void ) { .......// Initialize the operating systemosal_init_system(); //第二步,操作系统初始化......osal_start_system(); //初始化完系统任务事件后,正式开始执行操作系统......}//第二步,进入 osal_init_system()函数,执行操作系统初始化uint8 osal_init_system( void ) //初始化操作系统,其中最重要的是,初始化操作系统的任务{// Initialize the Memory Allocation Systemosal_mem_init();// Initialize the message queueosal_qHead = NULL;// Initialize the timersosalTimerInit();// Initialize the Power Management Systemosal_pwrmgr_init();// Initialize the system tasks.osalInitTasks(); //第三步,执行操作系统任务初始化函数// Setup efficient search for the first free block of heap.osal_mem_kick();return ( SUCCESS );}//第三步,进入osalInitTasks()函数,执行操作系统任务初始化void osalInitTasks( void ) //第三步,初始化操作系统任务{uint8 taskID = 0;tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));//任务优先级由高向低依次排列,高优先级对应 taskID 的值反而小macTaskInit( taskID++ ); //不需要用户考虑nwk_init( taskID++ ); //不需要用户考虑Hal_Init( taskID++ ); //硬件抽象层初始化,需要我们考虑#if defined( MT_TASK )MT_TaskInit( taskID++ );#endifAPS_Init( taskID++ ); //不需要用户考虑#if defined ( ZIGBEE_FRAGMENTATION )APSF_Init( taskID++ );#endifZDApp_Init( taskID++ ); //第四步,ZDApp层,初始化,执行ZDApp_init函数后,如果是协调器将建立网络,如果是终端设备将加入网络。
ZigBee协议
ZigBee协议协议名称:ZigBee协议一、引言ZigBee协议是一种低功耗、低数据速率的无线通信协议,旨在为物联网设备提供可靠的通信和互操作性。
本协议旨在规范ZigBee网络的结构、通信机制、安全性和设备互操作性等方面的要求,以促进物联网应用的发展和智能化的实现。
本协议适用于各种物联网设备,如传感器、智能家居设备、工业自动化设备等。
二、范围本协议适用于使用ZigBee技术的无线物联网设备,包括但不限于以下方面:1. ZigBee网络的组网结构和拓扑结构;2. ZigBee设备之间的通信机制和数据传输方式;3. ZigBee网络的安全性和加密机制;4. ZigBee设备的互操作性和兼容性。
三、术语和定义在本协议中,除非另有明确规定,以下术语和定义适用于整个文档:1. ZigBee:一种基于IEEE 802.15.4标准的无线通信技术,用于短距离、低功耗的物联网应用。
2. ZigBee设备:采用ZigBee技术的物联网设备,包括协调器、路由器和终端设备。
3. 协调器:ZigBee网络中的主设备,负责组网、路由和网络管理等功能。
4. 路由器:ZigBee网络中的中间设备,负责数据包的转发和路由选择等功能。
5. 终端设备:ZigBee网络中的终端设备,负责与传感器、执行器等设备进行通信。
6. PAN:个人局域网(Personal Area Network)的缩写,指由一个协调器和一组终端设备组成的ZigBee网络。
7. 网络拓扑:ZigBee网络中设备之间的连接方式和结构,包括星型、网状、树状等拓扑结构。
8. 数据传输:ZigBee设备之间进行数据交换和通信的过程,可以是单播、广播或多播方式。
四、ZigBee网络结构1. ZigBee网络拓扑结构应根据实际需求选择,可以采用星型、网状、树状等结构。
2. 每个ZigBee网络应包括一个协调器和至少一个终端设备。
3. ZigBee网络中的路由器数量应根据网络规模和通信距离确定,以保证网络的稳定性和可靠性。
ZigBee协议
ZigBee协议协议名称:ZigBee协议一、引言ZigBee协议是一种低功耗、低速率、近距离无线通信协议,主要用于物联网设备之间的通信。
本协议旨在定义物联网设备之间的通信规范,以促进设备之间的互联互通,提高物联网系统的可靠性和效率。
二、术语和定义在本协议中,以下术语和定义适用:1. ZigBee设备:指采用ZigBee协议的物联网设备。
2. ZigBee协调器:指在ZigBee网络中具有协调和管理功能的设备。
3. ZigBee终端设备:指在ZigBee网络中具有执行特定功能的设备。
4. ZigBee路由器:指在ZigBee网络中具有路由功能的设备。
5. ZigBee网络:指由ZigBee设备组成的网络。
三、协议规范1. ZigBee网络拓扑结构ZigBee网络采用星型拓扑结构,其中一个ZigBee协调器作为网络的中心,控制和管理其他ZigBee终端设备和路由器。
ZigBee终端设备通过路由器与协调器进行通信。
2. ZigBee网络通信2.1 ZigBee设备的加入新的ZigBee设备可以通过加入过程加入到现有的ZigBee网络中。
加入过程包括设备的发现、认证和关联等步骤,以确保设备的合法性和网络的安全性。
2.2 ZigBee网络层次结构ZigBee网络分为三个层次:应用层、网络层和物理层。
应用层负责设备之间的数据交换和协调;网络层负责路由选择和数据转发;物理层负责无线信号的传输和接收。
2.3 ZigBee网络通信协议ZigBee网络通信协议采用基于IEEE 802.15.4标准的MAC层和PHY层协议。
MAC层协议定义了设备之间的数据传输规则和网络管理机制,PHY层协议定义了无线信号的调制解调和传输方式。
3. ZigBee设备功能规范3.1 ZigBee协调器功能规范ZigBee协调器具有以下功能:- 网络管理:负责管理ZigBee网络的拓扑结构、路由选择和设备加入过程。
- 数据协调:负责协调设备之间的数据交换和通信。
ZigBee协议
ZigBee协议协议名称:ZigBee协议一、引言ZigBee协议是一种低功耗、低速率的无线通信协议,旨在为物联网设备提供可靠、安全的无线通信能力。
本协议旨在规范ZigBee网络的组网方式、通信协议、安全机制等内容,以确保设备之间的互操作性和数据传输的可靠性。
二、范围本协议适用于基于ZigBee技术的物联网设备,包括但不限于传感器、执行器、智能家居设备等。
三、术语定义1. ZigBee:一种基于IEEE 802.15.4标准的无线通信技术,用于低功耗、低速率的短距离通信。
2. ZigBee设备:采用ZigBee技术的物联网设备,包括终端设备和协调器设备。
3. 终端设备:指无线传感器节点或执行器节点,可以通过协调器设备进行通信。
4. 协调器设备:指ZigBee网络中的主节点,负责网络的管理和协调。
四、ZigBee网络组网方式1. 网络拓扑结构:ZigBee网络采用星型、树型或网状拓扑结构,由一个协调器设备和若干终端设备组成。
2. 网络组网方式:ZigBee网络可以通过协调器设备进行主动组网,也可以通过设备之间的自组织方式进行动态组网。
3. 网络扩展性:ZigBee网络支持网络的扩展,可以通过添加更多的终端设备或协调器设备来扩大网络规模。
五、ZigBee通信协议1. ZigBee帧格式:ZigBee通信采用帧格式进行数据传输,包括帧起始符、帧控制字段、目标地址字段、源地址字段、帧有效载荷和帧校验字段等。
2. 数据传输方式:ZigBee通信支持广播传输、单播传输和多播传输三种方式,根据实际应用需求选择合适的传输方式。
3. 数据传输速率:ZigBee通信的数据传输速率根据设备所采用的射频通信频段和通信距离进行调整,一般在10-250 kbps之间。
4. 网络协议栈:ZigBee通信采用分层的网络协议栈,包括物理层、介质访问控制层、网络层和应用层,以实现数据的可靠传输和网络的管理。
六、ZigBee安全机制1. 密钥管理:ZigBee网络使用密钥管理机制来确保通信的安全性,包括密钥生成、密钥分发和密钥更新等操作。
zigbee协议栈代码主要名词解释
zigbee协议重要名词解释及英文缩写(转载)网络层功能:1. 加入和退出网络2. 申请安全结构3. 路由管理4. 在设备之间发现和维护路由5. 发现邻设备6. 储存邻设备信息当适当的重新分配地址联合其他设备,ZIGBEE2006可以依赖于网络协调者建立一个新网络.ZIGBEE应用层由APS(应用支持)、AF(应用结构)、ZDO(ZIGBEE设备对象)和厂商自定义应用对象组成。
APS功能1. 绑定维持工作台,定义一个两个合拢的设备进行比较建立他们的需要和服务。
2. 促进信息在设备之间的限制3. 组地址定义,移除和过滤组地址消息4. 地址映射来自于64位IEEE地址和16位网络地址5. 分裂、重新组装和可靠数据传输ZDO功能1. 定义设备内部网络(ZigBee协调者和终端接点)2. 开始和/或回答绑定请求3. 在网络设备中建立一个网络安全关系4. 在网络中发现设备和决定供给哪个应用服务ZDO同样有责任在网络中发现设备和为他们提供应用服务。
1.1.4 网络拓扑ZIGBEE网络层支持星状、树状和网状拓扑。
在星状拓扑中网络受约束与单个设备,呼叫COORD。
COORD有责任建立和维持在网络中发现的设备和其他所有设备,都知道的终端接点直接和COORD 通信。
在网状和树状拓扑中,COORD有责任建立一个网络和选择几个关键网络参数,但是网络有有可能直接应用于ZigBee路由器。
在树状网络中,利用分等级路由策略完成路由传输数据和控制消息直通网络。
树状网络在802.15.4-2003中可以采用信标引导通信。
网状网络将允许所有对等网络通信。
ZIGBEE 路又将不能在网状网络中发射规则的IEEE802.15.4-2003信标。
缩写含义AIB:应用支持层消息AF:应用结构APDU:应用支持层以下数据单位APL:应用层APS:应用支持层APSDE:应用支持层以下数据实体APSDE-SAP:应用支持层数据实体—服务通道APSME:应用支持层管理实体APSME-SAP:应用支持层管理实体—服务通道ASDU:APS服务数据单位BRT:广播重试计时器BTR:广播处理记录BTT:广播处理工作台CCM*:CSMA-CA:载波多重监听通道——避免碰撞FFD:全部功能设备GTS:担保时间跟踪IB:消息数据LQI:连接质量指示LR-WPAN:低速率无线局域网MAC:控制层MCPS-SAP:控制层公共部分—服务通道MIC:消息完整代码MLME-SAP:控制层管理实体—服务通道MSC:消息序列图表MSDU:控制层服务数据单位MSG:消息服务类型NBDT:网络广播发送时间NHLE:下一个更高层实体NIB:网络层信息数据NLDE:网络层数据实体NLDE-SAP:网络层数据实体——服务通道NLME:网络层管理实体NLME-SAP:网络层管理实体——服务通道NPDU:网络层数据单位NSDU:网络服务数据单位NWK:网络OSL:打开系统联络PAN:局域网PD-SAP:物理层数据—指向服务通道PDU:协议数据单位PHY:物理层PIB:局域网消息PLME-SAP:物理层管理实体——指向服务通道POS:私人运作空间QOS:服务质量RREP:路由回答RN:路由接点SKG:SKKE:SSP:安全服务提供SSS:安全服务说明WPAN:无线局域网XML:可扩展语言ZB:ZIGBEEZDO:ZIGBEE设备对象2.1.1APSAPS提供一个工作台在网络层和应用层之间直接服务于ZDO和厂商自定义设备。
ZigBee协议
ZigBee协议协议名称:ZigBee协议一、引言ZigBee协议是一种低功耗、低数据速率的无线通信协议,旨在为物联网设备提供可靠的通信解决方案。
本协议旨在定义ZigBee网络的架构、通信规范、安全性要求等,以确保各种设备之间的互操作性和数据传输的可靠性。
二、范围本协议适用于使用ZigBee技术的无线通信设备,包括但不限于传感器、控制器、智能家居设备等。
它定义了设备之间的通信方式、数据格式、网络拓扑结构以及安全机制等。
三、术语和定义在本协议中,以下术语和定义适用于所有相关方:1. ZigBee:一种基于IEEE 802.15.4标准的低功耗无线通信技术。
2. ZigBee设备:使用ZigBee协议进行通信的无线设备。
3. ZigBee协调器:ZigBee网络中的主节点,负责网络的组网和管理。
4. ZigBee路由器:ZigBee网络中的中继节点,负责数据转发和扩展网络覆盖范围。
5. ZigBee终端设备:ZigBee网络中的从节点,负责与其他设备进行通信。
6. PAN(Personal Area Network):个人局域网,由一个协调器和一组终端设备组成。
7. 网络拓扑结构:ZigBee网络中各个设备之间的连接方式和关系。
8. 网络层:ZigBee协议栈中的一层,负责设备之间的路由和寻址。
9. 应用层:ZigBee协议栈中的一层,负责设备之间的数据交互和功能定义。
10. 安全性:保护ZigBee网络免受未经授权的访问、攻击和数据泄露的能力。
四、ZigBee网络架构1. 网络拓扑结构ZigBee网络采用星型、树型或网状拓扑结构。
其中,星型拓扑结构由一个协调器和一组终端设备组成,所有终端设备都直接与协调器相连。
树型拓扑结构由一个协调器、一组路由器和一组终端设备组成,路由器负责数据转发。
网状拓扑结构由多个协调器、路由器和终端设备组成,形成一个自组织的网络。
2. ZigBee协调器ZigBee协调器是ZigBee网络的主节点,负责网络的组网和管理。
ZigBee协议
ZigBee协议协议名称:ZigBee协议1. 引言ZigBee协议是一种低功耗、低数据传输速率、短距离无线通信协议,旨在为低成本、低功耗的传感器和控制设备提供互联互通的解决方案。
本协议规定了ZigBee网络的架构、通信方式、设备类型和功能等相关内容,以确保各种设备之间的无缝连接和数据交换。
2. 定义2.1 ZigBee设备:指符合ZigBee协议标准的无线通信设备,包括传感器、控制器、路由器等。
2.2 ZigBee网络:由多个ZigBee设备组成的无线网络,通过无线信道进行通信和数据传输。
3. 网络架构3.1 ZigBee设备类型3.1.1 ZigBee协调器(Coordinator):网络的控制中心,负责网络的组建、管理和控制。
3.1.2 ZigBee路由器(Router):中继数据包,扩展网络覆盖范围。
3.1.3 ZigBee终端设备(End Device):提供传感、控制和数据交互功能。
3.2 网络拓扑结构ZigBee网络采用星型、树状或网状拓扑结构。
协调器作为网络的根节点,路由器和终端设备连接在协调器下方,形成多层次的网络结构。
4. 通信方式4.1 网络发现新加入的设备可以通过主动或被动方式进行网络发现,以便加入已有的ZigBee 网络。
4.2 网络建立4.2.1 协调器的启动协调器负责启动和组建ZigBee网络,设定网络参数、分配网络地址等。
4.2.2 设备的加入新设备加入网络时,需要进行网络认证和分配网络地址,以确保网络安全和设备唯一性。
4.3 数据传输4.3.1 信道访问ZigBee网络采用时间分割多址(TDMA)方式进行信道访问,确保设备之间的通信不会发生冲突。
4.3.2 数据帧格式数据帧由帧控制字段、目标地址字段、源地址字段、帧有效载荷字段等组成,确保数据的正确传输和解析。
5. 安全性ZigBee协议提供多种安全机制,保护网络和数据的安全性。
5.1 密钥管理设备之间的通信可以使用对称密钥或公钥加密算法进行加密和解密。
ZigBee源码程序及解释
协议栈无线透传编程原理:第一个功能:协调器的组网,终端设备和路由设备发现网络以及加入网络//第一步:Z-Stack 由 main()函数开始执行,main()函数共做了 2 件事:一是系统初始化,另外一件是开始执行轮转查询式操作系统int main( void ) { .......// Initialize the operating systemosal_init_system(); //第二步,操作系统初始化......osal_start_system(); //初始化完系统任务事件后,正式开始执行操作系统......}//第二步,进入 osal_init_system()函数,执行操作系统初始化uint8 osal_init_system( void ) //初始化操作系统,其中最重要的是,初始化操作系统的任务{// Initialize the Memory Allocation Systemosal_mem_init();// Initialize the message queueosal_qHead = NULL;// Initialize the timersosalTimerInit();// Initialize the Power Management Systemosal_pwrmgr_init();// Initialize the system tasks.osalInitTasks(); //第三步,执行操作系统任务初始化函数// Setup efficient search for the first free block of heap.osal_mem_kick();return ( SUCCESS );}//第三步,进入osalInitTasks()函数,执行操作系统任务初始化void osalInitTasks( void ) //第三步,初始化操作系统任务{uint8 taskID = 0;tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt);osal_memset( tasksEvents, 0, (sizeof( uint16 ) * tasksCnt));//任务优先级由高向低依次排列,高优先级对应 taskID 的值反而小macTaskInit( taskID++ ); //不需要用户考虑nwk_init( taskID++ ); //不需要用户考虑Hal_Init( taskID++ ); //硬件抽象层初始化,需要我们考虑#if defined( MT_TASK )MT_TaskInit( taskID++ );#endifAPS_Init( taskID++ ); //不需要用户考虑#if defined ( ZIGBEE_FRAGMENTATION )APSF_Init( taskID++ );#endifZDApp_Init( taskID++ ); //第四步,ZDApp层,初始化,执行ZDApp_init函数后,如果是协调器将建立网络,如果是终端设备将加入网络。
zigbee组网小实验2—相关源代码1
·风格控,你今天“艰难决定”了吗? ·手机写博 Word写博 LiveWriter写博
2010-12-17
zigbee组网小实验2—相关源代码1 - 小峰的日志 - 网易博客
/*SPI Data command*/ if ( events & UART_RX_DAT_CB_EVT ) {
SampleApp_SPI_SendData( databuf, rxlen+1+2 ); return (events ^ UART_RX_DAT_CB_EVT); } //********************** /*SPI Control command*/ if ( events & UART_RX_CMD_CB_EVT ) { // HalLedBlink( HAL_LED_4, 4, 50, (1000 / 4) ); //test SampleApp_SPI_SendCommand( databuf, rxlen+1+2 ); return (events ^ UART_RX_CMD_CB_EVT); } //********************** /*inform the coordinator when join the network*/ #ifndef ZDO_COORDINATOR if ( events & SAMPLEAPP_SEND_NWKADDR_EVT ) { SampleApp_SendNwkaddrMessage(); return ( events ^ SAMPLEAPP_SEND_NWKADDR_EVT); } #endif //********************** /*transmit the data periodically*/ if ( events & SAMPLEAPP_COMMAND_PERIODIC_MSG_EVT ) { SampleApp_PrcoessCommandPeriodicMessage(); return ( events ^ SAMPLEAPP_COMMAND_PERIODIC_MSG_EVT); } //********************** // Discard unknown events return 0; }
zigbee协议栈源码
竭诚为您提供优质文档/双击可除zigbee协议栈源码篇一:zigbeez-stack协议栈构架zstack基础1、zstack协议栈构架zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些应用层api,供用户调用。
协议栈体系分层架构与协议栈代码文件夹对应表如下:整个协议栈的构架,如图所示app:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容,在协议栈里面一般是以操作系统的任务实现的。
hal:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。
mac:mac层目录,包含了mac层的参数配置文件及其mac的lib库的函数接口文件。
mt:监控调试层,主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。
nwk:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,aps层库的函数接口。
osal:协议栈的操作系统。
profile:aF层目录,包含aF层处理函数文件。
security:安全层目录,安全层处理函数接口文件,比如加密函数等。
services:地址处理函数目录,包括着地址模式的定义及地址处理函数。
tools:工程配置目录,包括空间划分及zstack相关配置信息。
zdo:zdo目录。
zmac:mac层目录,包括mac层参数配置及mac层lib 库函数回调处理函数。
zmain:主函数目录,包括入口函数main()及硬件配置文件。
output:输出文件目录,这个ew8051ide自动生成的。
2、zigbee20xx协议栈源码库结构分析了解了zigbee20xx协议栈整个构架后,再来看看协议栈源码库结构是什么样的,各层的具体文件是什么,建立不同的项目、添加自己的应用层任务及处理函数需要修改什么文件。
zigbee20xx协议栈zstack-1.4.2文件目录及说明如下:打开smapleapp项目工程先看app层:从上图可以看出,对于不同的项目,大部分代码都是相同的,只是在用户应用层,添加了不同的任务及事件处理函数。
