ZigBee中的绑定由APS层来管理,除了绑定表管理外,APS层还有组表管理、快速地址查找等服务功能。应用层不能直接调用APS层中的数据服务来传输数据,只能通过AF层封装的AD_DataRequest函数来实现数据传输。

看了许多相关的文档,里面说及到,绑定服务在两个不同节点的简单描述符中,定义相同的簇ID,且方向相反(一个在输出簇,一个在输入簇),才能成功建立绑定。

APS绑定表的大小受限于静态RAM的大小,由f8wConfig.cfg中的参数来指定。

默认配置中,有四个绑定表条目,每个条目中,可以有4个簇ID。

要配置使用绑定表,需要定义REFLECTOR宏(在f8wconfig.cfg中配)

绑定表操作

对一个表的操作,无非就是增删改查。

1. 增加一个绑定表条目

函数原型:
BindingEntry_t *bindAddEntry( byte srcEpInt,
zAddrType_t *dstAddr, byte dstEpInt,
byte numClusterIds, uint16 *clusterIds ) srcEpInt:源端点
dstAddr:目的地址
dstEpInt:目的端点
numClusterIds:簇列表数目
clusterIds:簇列表 成功返回指向新加入绑定表的指针,失败返回NULL 2.移除一个绑定表条目 函数原型:
byte bindRemoveEntry( BindingEntry_t *pBind )
pBind:指向想要删除的绑定表指针 成功返回TRUE 3.移除绑定条目中的簇命令 函数原型:
byte bindRemoveClusterIdFromList( BindingEntry_t *entry, uint16 clusterId )
entry:绑定表的入口
clusterID:待删除的簇ID 成功返回TRUR,至少有一个对于的簇ID。如果没有的话,返回FALSE 4.增加绑定表条目中的簇 函数原型:
byte bindAddClusterIdToList( BindingEntry_t *entry, uint16 clusterId )
entry:绑定表入口
clusterID:需要添加的簇ID 成功返回TRUE,失败返回FALSE 5.找到一个已经存在的源端点到目的地址的绑定记录 函数类型:
BindingEntry_t *bindFindExisting( byte srcEpInt,
zAddrType_t *dstAddr, byte dstEpInt ) srcEpInt:源端点
dstAddr:目的地址类型
dstEInt:目的地址端点号

使用Flash时,需要设置编译选项NV_RESTORE[f8wConfig.cfg],保存绑定表,建议使用BindWriteNV函数。

组管理

组用来将一系列节点集合到一个单地址实体的方式,向这个地址发送数据请求,请求能够达到组中的每个节点。

第一个结构体为组结构标书,第二个结构体为组链表描述。

组操作函数有

将一个端点加入一个组:extern ZStatus_t aps_AddGroup( uint8 endpoint, aps_Group_t *group );

使用方法:

定义一个组:aps_Group_t  SampleApp_Group;

初始化组信息:

SampleApp_Group.ID = SAMPLEAPP_FLASH_GROUP;
             osal_memcpy( SampleApp_Group.name, "Group 1", 7  );

将端点加入一个组:

aps_AddGroup( SAMPLEAPP_ENDPOINT, &SampleApp_Group );

从组表中根据端点和组ID找到组索引

aps_Group_t *grp;
              grp = aps_FindGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );

根据组ID,移除其中的端点

aps_RemoveGroup( SAMPLEAPP_ENDPOINT, SAMPLEAPP_FLASH_GROUP );

快速地址查找

APS提供函数用来快速地址转换,在IEEE和网络地址之间做转换。

uint8 APSME_LookupExtAddr( uint16 nwkAddr, uint8* extAddr ); 基于网络地址获得IEEE 地址

uint8 APSME_LookupNwkAddr( uint8* extAddr, uint16* nwkAddr ); 基于IEEE地址获得NWK地址

ZigBee绑定细节的更多相关文章

  1. js事件绑定细节说明

    javascript绑定事件: 经常用jQuery去写,时间长了对原生态的js事件绑定的知识会慢慢淡化或者遗忘了,必须翻出来再次总结,今天再次把js原生态事件的处理做个总结. 从最初开始,谁刚接触ja ...

  2. [WinForm] DataGridView 绑定 DT && ComboBox 列绑定 Dict

    一  需求介绍 一般像枚举类型的数据,我们在数据库里存储着诸如(1.2.3.4-)或者("001"."002"."003"-)此类,但是界面 ...

  3. zigbee CC2530首选方案模组:TZU06A1

    模块特点 微型24-pin 邮票式SMT 封装 提供U.FL 接口,用于外接SMA 天线 小尺寸封装:16mm*20mm*3.7mm 通过欧盟CE0168.欧盟ROHS 认证 基于8051 单片机架构 ...

  4. C++17结构化绑定

    动机 std::map<K, V>的insert方法返回std::pair<iterator, bool>,两个元素分别是指向所插入键值对的迭代器与指示是否新插入元素的布尔值, ...

  5. Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)

    系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...

  6. WSDL规则解释(转)

    转自:http://www.blogjava.net/baoyaer/articles/116413.html WSDL文档可以分为两部分.顶部分由抽象定义组成,而底部分则由具体描述组成.抽象部分以独 ...

  7. 简易Asset工作流

    前言: 当前比较主流的制作流程都可以按顺序细分为三个部分:资产环节(asset section),镜头环节(shot section),合成环节(composite section). 考虑到单一资产 ...

  8. Web服务架构

    # Web服务架构 ### Web服务模型-- 服务提供者.服务请求者.服务注册中心,服务注册中心是一个可选的角色. 现在的Web服务不仅限于WSDL,还有RESTful. - 服务提供者.即Web服 ...

  9. 如何查找Fiori UI上某个字段对应的后台存储表的名称

    今天微信群里有朋友问到这个问题. 如果是SAPGUI里的事务码,比如MM01,对于开发者来说这个任务非常容易完成. 比如我想知道下图"Sales Unit"这个字段的值到底保存在哪 ...

随机推荐

  1. 用DirectShow实现视频採集-流程构建

    DirectShow作为DirectX的一个子集,它为用户提供了强大.方便的多媒体开接口,而且它拥有直接操作硬件的能力,这使得它的效率远胜于用GDI等图形方式编写的多媒体程序.前面一篇文章已经对Dir ...

  2. delphi SpeedButtonDown

    的属性 的事件 的方法   设置SpeedButton的Down的属性      AllowAllUp属性 当有多个SpeedButton时 让有2个按钮都能处于按下状态 设置它的GroupIndex ...

  3. DELPHI 多线程

    效果不正确 unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Control ...

  4. SSH框架之Struts(2)——Struts的执行流程之配置文件

    上篇我们大致了解了一下採用了Struts框架的web页面运行流程. 接下来的几篇我们通过Struts的源代码来学习一下Struts的内部原理. 当server启动的时候.server会依据配置文件初始 ...

  5. Nginx Rewrite 实现匹配泛域名规则

    Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru ...

  6. android152 笔记 2

    27.谈谈UI中, Padding和Margin有什么区别? Padding 文字对边框, margin是控件对父窗体. 28. widget相对位置的完成在activity的哪个生命周期阶段实现.控 ...

  7. 在一个文件中有10G个整数,乱序排列,要求找出中位数

     题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). ...

  8. debian7安装oracle11g

    1,安装必须包 apt-get install gcc g++  make binutils libc6 libc6-dev libstdc++6 libstdc++5 rpm gawk alien ...

  9. Google搜索语法

    原文:http://www.jianshu.com/p/37fe4f1381ef 前言 之前听过一个笑话,有人打开浏览器,输入www.baidu.com, 然后搜索框输入Google,查询google ...

  10. easyeclipse for php 如何默认显示行号

    呃... 相当简单 window->preferences->PHPeclipse web development->php 然后找到appearance选项卡 在 show lin ...