欢迎来到天天文库
浏览记录
ID:37714144
大小:19.66 KB
页数:5页
时间:2019-05-29
《ZigBee学习之绑定表管理函数详解——ZStack API解读》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ZigBee学习之绑定表管理函数详解——ZStackAPI解读 2010-12-2914:05:20
2、 分类: ZigBee技术
3、 标签:入口 终端 uint8 uint16 函数
4、字号 订阅应用支持子层(APS) 应用支持子层提供如下管理功能: ·邦定表管理 ·组表管理 ·快速地址查找 除了管理功能外,APS还提供数据服务,只是应用不能访问数据服务。应用需要通过AF数据接口AF_DataRequest()来发送数据。如果要使用邦定表函数需要包含BindingTable.h头文件。 邦定表管理 请注意,绑定服务只能在“互补”设备之间建立。那就是,只有
5、分别在两个节点的简单描述结构体(simpledescriptorstructure)中,同时注册了相同的命令标识符(command_id)并且方向相反(一个属于输出指令“output”,另一个属于输入指令“input”),才能成功建立绑定。 APS邦定表是在静态RAM中定义的一张表,定义在nwk_globals.c中。表的大小可以通过f8wConfig.cfg中的【NWK_MAX_BINDING_ENTRIES和MAX_BINDING_CLUSTER_IDS】莱配置。只有定义了REFLECTOR或者COORDINATOR_BINDING才能包含此表,用REFLECTOR
6、编译选项来支持APS层的源邦定。 邦定表结构–BindingEntry_t typedefstruct { uint16srcIdx;//AddressManagerindex uint8srcEP; uint8dstGroupMode;//Destinationaddresstype;0-Normaladdressindex,1- //Groupaddress uint16dstIdx;//Thisfieldisusedinbothmodes(groupandnon-group)to //saveNVandRAMspace //dstGroupMode=0-Addre
7、ssManagerindex //dstGroupMode=1-GroupAddress uint8dstEP; uint8numClusterIds; uint16clusterIdList【MAX_BINDING_CLUSTER_IDS】; //Don‘tuseMAX_BINDING_CLUSTERS_IDwhen //usingtheclusterIdListfield.Use //gMAX_BINDING_CLUSTER_IDS }BindingEntry_t; srcIdx–源地址(绑定记录的源地址)的地址管理器索引,地址管理器保存着源地址的IEEE地址和短地
8、址。 srcEP-源终端 dstGroupMode-目的地址类型。 0普通地址 1组地址 dstIdx-若dstGroupMode为0,则包含目的地址的地址管理器索引,若dstGroupMode为1,则包含目的组地址 dstEP-目的终端 numClusterIds-clusterIdList中的入口数目 clusterIdList-簇ID列表。列表的最大数目定义由MAX_BINDING_CLUSTER_IDS【f8wConfig.cfg】指定 邦定表维护 BindingEntry_t*bindAddEntry(zAddrType_t*srcAddr,bytesrcEp
9、Int, zAddrType_t*dstAddr,bytedstEpInt, bytenumClusterIds,uint16*clusterIds); 在邦定表中增加一个入口。由于每个入口可以有多个clusterID,所以此函数有可能仅仅在已有邦定条目上增加clusterID srcAddr-邦定记录源地址。为Addr16Bit或者Addr64Bit的addr数据结构 srcEpInt-邦定记录源终端 dstAddr-邦定记录目的地址,为Addr16Bit,Addr64Bit或AddrGroupaddrMode,若为AddrGroup则组ID(groupID)填充到a
10、ddr.shortAddr dstEpInt-邦定记录目标终端,若dstAddr为组地址,则忽略此位 clusterIds-指向要增加的clusterID(16位)列表。 返回值:BindingEntry_t-指向一条新加入的邦定入口 bytebindRemoveEntry(BindingEntry_t*pBind); pBind-指向邦定表中一个入口的指针 bytebindRemoveClusterIdFromList(BindingEntry_t*entry,uint16clusterId); 从已存在的邦定表入口的clusterID
此文档下载收益归作者所有