Z-Stack内部API 小结
Z-Stack是TI推出的全功能ZigBee协议栈,通过了ZigBee联盟的兼容性平台测试,包含如下几个组件。
1. HAL,硬件抽象层
2. OSAL,操作系统抽象层
3. ZigBee Stack和IEEE 802.15.4
4. User App
5. MT,通过串口与PC进行通讯的demo
API主要有以下几个方面:
初始化
zb_SystemReset 复位设备,一般在写入新配置后,重启设备来启用更新的信息
zb_StartRequest : 启动ZigBee协议栈与zb_StartConfirm形成回调关系,回调就是StartRequest请求发出后,处理结果的函数在StartConfirm函数里面。
配置
zb_ReadConfiguration : 从非易失性存储器中获得指定的配置信息
zb_WriteConfiguration:往非易失性存储器中写配置信息
zb_GetDeviceInfo :获得设备相关信息
发现
zb_FindDeviceRequest
zb_BindDevice: 建立或者移除一个绑定条目
zb_AllowBind: 设置为一段指定时间(永久、不允许、一段时间)的允许绑定模式,与zb_BindDevice配合使用。
zb_PermitJoiningRequest 用来控制设备加入请求
数据传输
zb_SendDataRequest 发送数据
zb_SendDataConfirm 响应数据的回调函数
如果要求ACK回应,但是没有收到ACK回应的话,设备会移除它已经创建的绑定表,尝试着重新绑定。
zb_ReceiveDataIndication:当应用层收到数据时,被此函数异步通知调用
绑定
在ZigBee中,绑定是在两个设备应用层之间的一个逻辑链路,一个设备可以为每个数据包分布建立绑定关系,除此之外,绑定可以有多于一个的目的地。以灯泡控制为例子,每个开关可以控制一个或者多个灯泡。这种情况下,每个开关就要建立一个绑定,这允许应用发送数据包,而不需要知道实际目的地址。
zb_SendDataRequest这个函数的第一个参数为目的地址,一般目的地址为0~0xFFFD,绑定关系的发送目的地址为0xFFFE,广播发送地址为0xFFFF.
当以绑定模式发送数据时,实际的目的地址是在内部绑定表中查找获得的。当在绑定表中有多个目的地址时,协议会自动发送一份数据拷贝给指定的目标。
如何配置设备的绑定状态呢?
1.如果目标设备的MAC地址已知,那么zb_BindDevice可被用来创建一个绑定项
2.如果目标设备MAC地址未知,待绑定的目标设备执行zb_AllowBindResponse来使其处于响应匹配请求的状态,要求绑定的设备执行zb_AllowBind来设置为允许绑定请求状态。
两个绑定设备之间需要有相同的ClusterID,不同的Cluster方向才能完匹配。
NV_RESTORE编译选项:从字面上可以猜测到,这个宏用来恢复已经存储的信息,既然是恢复,那么肯定是比较重要的、掉电不能丢失的信息,比如网络信息、绑定表信息等等。
Z-Stack内部API 小结的更多相关文章
- Atitit.常用语言的常用内部api 以及API兼容性对源码级别可移植的重要性 总结
Atitit.常用语言的常用内部api 以及API兼容性对源码级别可移植的重要性 总结 1.1. 要兼容的重要语言api1 1.2. 常用基础api分类 core api1 1.3. 比较常用的扩展库 ...
- 【翻译】内部API的价值
内部api的设计,主要是为了简化软件的开发,简化系统和操作过程.目前绝大多数用例是这样的. 内部api经常被忽略,因为它们是针对内部开发人员的.这种类型的api通常使用于特定公司及其部门的专用数据.尽 ...
- Java中日期时间API小结
Java中为处理日期和时间提供了大量的API,确实有把一件简单的事情搞复杂的嫌疑,各种类:Date Time Timestamp Calendar...,但是如果能够看到时间处理的本质就可以轻松hol ...
- cordova 内部API 用ssl https,报错
环境:node6.10.1 cordova 6.x, ionic 2.2.1 用cordova/ionic 建立的app我们的api 地址要用https,做了安全加密之后,按照正常的流程,打包,然后跑 ...
- JDBC常用API小结
建立数据库链接的三种方式: package com.victor_01; import java.sql.Connection; import java.sql.Driver; import java ...
- [MEAN Stack] First API -- 3. Select by ID with Mongoose and Express
Mongoose allows you to easily select resources by ID from your MongoDB. This is an important aspect ...
- [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB
Learn how to import data into your MongoDB and then use Express to serve a simple Node.js API. Impor ...
- canvas的api小结
HTML <canvas id="canvas"></canvas> Javascript var canvas=document.getElementBy ...
- jquery 常用api 小结2
*一)jQuery常用方法API实战 (1)DOM简述与分类 A)DOM是一种标准,它独立于平台,语言,浏览器. B)如果项目中,你完全按照DOM标准写代码,你就能在各大主流的浏览器中操作标准控件. ...
随机推荐
- Linux设备模型分析之kset(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 内核版本:3.10.1 一.kset结构定义 kset结构体定义在include/linux/kobject.h ...
- POJ 2406 Power Strings KMP运用题解
本题是计算一个字符串能完整分成多少一模一样的子字符串. 原来是使用KMP的next数组计算出来的,一直都认为是能够利用next数组的.可是自己想了非常久没能这么简洁地总结出来,也仅仅能查查他人代码才恍 ...
- confirm使用方法
定义和使用方法 confirm() 方法用于显示一个带有指定消息和 OK 及取消button的对话框. 语法 confirm(message) 參数 描写叙述 message 要在 window 上弹 ...
- Nagios在Ubuntu server上的安装配置
首先我参看的是Nagios的官方文档,Nagios – Installing Nagios Core From Source——The Industry Standard in IT Infrastr ...
- [ES6] 19. for ... of
In ES5, we have for ... in: var phones = ["iPhone", "Nexus", "Nokia"]; ...
- truncate 与 delete 的区别
Delete删除的数据可以通过日志文件进行恢复 Truncate Table删除的数据不能进行恢复 Delete删除时,标识列取值保留原使用中最大值 Truncate Table删除时,标识列恢复到最 ...
- graylog2+syslog-ng+mongodb构建集中管理日志服务器 --转载
原文地址:http://blog.chinaunix.net/uid-11065483-id-3654882.html 由于公司内需要监控QQ的上下线记录,原本使用了分光+Panabit+Splunk ...
- Redis 字符串(String)
Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 12 ...
- ASP.NET MVC 之 路由配置
主要操作在App_Start 目录下的 RouteConfig.cs 文件. 一.Url构造方式 1.命名参数规范+匿名对象 routes.MapRoute( name: "Default& ...
- cocos2d-x lua与c++简单交互
cocos2d-x lua与c++简单交互 version: cocos2d-x 3.6 本文讲述lua与c++的一些简单交互: lua通过消息方式调用c++无参接口 c++调用lua带参接口 1.通 ...