- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ZStack--建立自己的应用程序.doc
ZStack--建立自己的应用程序 收藏
在TI提供例程中有一个SimpleApp的例程,对于应用开发而言,例程SimpleApp展现了简化的API的使用,减少了一系列的API函数和回调函数,简化了协议栈启动的流程。这里重点介绍这些简化以后的API.
1、Z-Stack Simple API总述
Z-Stack是TI正对CC2430/CC2431等提供的免费协议栈,简称为ZCP,他由以下单元组成:
HAL(硬件抽象层)
OSAL(操作系统抽象层)
Zigbee Stack + IEEE 802.15.4 MAC
User Application (用户应用程序)
MT(moniter test)--通过串口与PC通信,主要用于调试
简单Zigbee API包括以下几个部分:
1 Initialization
zb_SystemReset
zb_StartRequest
2 Configuration
zb_ReadConfiguration
zb_WriteConfiguration
zb_GetDeviceInfo
3 Discovery(device,netword and service discovery)
zb_FindDeviceRequest
zb_BindDeviceRequest
zb_PermitJoinRequest
4 Data transfer
zb_SendDataRequest
zb_ReceiveDataIndication
1.1将一个设备加入网络
作为网络的一部分,每个设备的“network-specific”参数要配置成相同的值。
每个设备的“device-specific”参数可以配置成不同的值,但是ZCD_NV_LOGICAL_TYPE必须被设置成
保证整个网络只有一个协调器设备,所有其他电池供电的设备配置成为终端设备。
在上述两个前提之下,任何设备就可以在任何顺序下启动,协调器被启动后将完成网络的组件,其他设备会
发现该网络并加入该网络。
协调器在启动的时候会执行以下步骤:
信道扫描(ZCD_NV_CHANLIST),挑选一个能量最小的信道;如果有很多信道都是低能量的信道,(低能量就是该信道在被使用)
则协调器将会挑选一个使用量最小的信道。
最后协调器会选择网络ID,这个ID在ZCD_NV_PANID被定义。
路由设备和终端设备会扫描信道(ZCD_NV_CHANLIST),尝试发现网络‘
1.2设备绑定
绑定就是形成在两个设备的应用层之间的一个逻辑链路。在一个设备上可以创建多种绑定,每种绑定由各自的数据包类型。一个绑定也可以由多个目的设备。
一旦在源设备上创建了绑定,应用程序可以不用知道目的设备的地址而发送数据(调用zb_SendDataRequest()函数,无效地址是-0XFFFE可以作为目的地址)。远设备就会在它的绑定列表中查找目的地址。
一个绑定路口可能由一个以上的目的地址,在这种情况下协议会自动复制要传输的数据,把他们发送到各个地址设备中去。
如果NV_RESTORE在会变中被定义的话,绑定列表将被放到非易失性存储设备中,这样在端点和重启后还能保存原先的绑定关系,继而恢复。
当在不知道目的地址的扩展地址的情况下,要建立绑定列表的话,目的设备会处于一种允许绑定的状态,通过函数zb_AllowBindResponse()作为应答。而源设备会通过函数zb_ BindDeviceRequest()发出绑定请求。
绑定表的建立是建立在端点的匹配的前提下的,所谓匹配就是,相同的端点,相同的描述符。
1.3开发一个简单的个人配件(profile)
在这里我们介绍如何通过使用简单API来创建一个应用
(1)在应用里定义所有设备,例如
-e.g. temperature sensor, occupancy sensor, thermostat, heating unit and remote control
-assign a device_id(unique 16bit identifier)to each of them
(2)定义“commands”,这些“commands”命令在设备之间传送,要给他们分配16位的ID,例如:
-temperature reading
-occupancy reading
-thermostat setting object
-heating/cooling unit control object
(3)给每个命令定义相应的设备输入和输出,例如:
-The temperature reading is output from the temp sensor and input to the thermostat
-The
文档评论(0)