SCOPIA Mobile V3今朝在Apple App Store可免费。 在公理的事业中,弱者也能克服强者 疾苦,在人的成长过程中是多么高贵而又神秘莫测呀!没有疾苦就没有诗歌,每一首诗几乎都是由一份兴奋,一份和两份疾苦所构成的!只有疾苦才干在生射中给你留下深深的印象。那萌发出冷气的祷告的,潮湿的泪痕就是人们称之为崇奉,和仁慈这三个高贵姊妹的母亲。啊,疾苦,让诗人都讴歌你吧!BindingTable 绑定表 1.绑定表存放的地位是内存中预先定义的块,若是编译选项NV_RESTORE被激活,也能保存在Flash里。 2.绑定表放置在源节点(须要激活编译选项REFLECTOR)。 3.绑定表的条目把须要发送的消息映射到它们的目标地址上。 4.绑定表中每个条目包含以下内容: 5.绑定表条目布局体的定义 typedefstruct { uint16srcIdx;//源地址索引 uint8srcEP;//源端点 uint8dstGroupMode;//指定寻址模式 uint16dstIdx;//目标地址索引或者分组号 uint8dstEP;//目标端点 uint8numClusterIds;//在簇标识符表中簇标识符的个数 uint16clusterIdList[MAX_BINDING_CLUSTER_IDS];//簇标识符表 }BindingEntry_t; SimpleDescription---Howtobinddevices 概述---如何绑定节点 绑定指的是两个节点在应用层上建树起来的一条逻辑链路。在同一个节点上可以建树多个绑定办事,分别对应不合种类的数据包。此外,绑定也容许有多个目标节点(一对多绑定)。 举个例子,在一个灯光收集中,有多个开关和灯光设备,每一个开关可以把握一个或以上的灯光设备。在这种景象下,须要在每个开关中建树绑定办事。这使得开关中的应用办事在不知道灯光设备确切的目标地址时,可以顺利地向灯光设备发送数据包。 一旦在源节点上建树了绑定,其应用办事即可向目标节点发送数据,而不需指定目标地址了(调用zb_SendDataRequest(),目标地址可用一个无效值0 xFFFE庖代)。如许,和谈栈将会按照数据包的号令标识符,经由过程自身的绑定表查找到所对应的目标设备地址。 在绑定表的条目中,有时会有多个目标端点。这使得和谈栈主动地反复发送数据包到绑定表指定的各个目标地址。同时,若是在编译目标文件时,编译选项NV_RESTORE被打开,和谈栈将会把绑定条目保存在非易失性存储器里。是以当不测重启(或者节点电池耗尽须要调换)等突发景象的产生时,节点能主动恢复到掉电前的工作状况,而不须要用户从头设置绑定办事。 设备设备绑定办事,有两种机制可供选择。若是目标设备的扩大地址(64位地址)已知,可经由过程调用zb_BindDeviceRequest()建树绑定条目。若是目标设备的扩大地址未知,可实验一个“按键”策略实现绑定。这时,目标设备将起首进入一个容许绑定的状况,并经由过程zb_AllowBindResponse()对配对恳求作出响应。然后,在源节点中履行zb_BindDeviceRequest()(目标地址设为无效)可实现绑定。 此外,应用节点外部的委托对象(凡是是调和器)也可实现绑定办事。请重视,绑定办事只能在“互补”设备之间建树。那就是,只有分别在两个节点的简单描述布局体(simpledescriptorstructure)中,同时注册了雷同的号令标识符(command_id)并且标的目标相反(一个属于输出指令“output”,另一个属于输入指令“input”),才干成功建树绑定。 Thereare4waystobuildabindingtable: 建树一个绑定表格有四种办法可供选择: 主动绑定 一、负责发送消息的设备在收集上广播带有如下参数的“小我通知布告”(PersonalAdvertisement): (1)地址,设备文件标识符,丛聚合列表; (2)描述符匹配恳求-ZDP_MatchDescReq()。 二、匹配的设备会作出响应。 三、由ZDO处理惩罚和验证响应 四、负责发送消息的设备建树绑定表并保存绑定记录。 五、这种办法有时也称“办事发明”,“主动找寻”或者“主动匹配”。 ZigBee设备对象绑定恳求-一种告诉目标设备建树绑定记录的委托对象,也称帮助绑定。 任何一个设备或应用办事,都能经由过程无线信道向收集上的另一个设备发送一个ZDO消息,帮助其建树一个绑定记录。这称为帮助绑定,在消息发向的设备上会建树一个绑定条目。 委托绑定的申请: 任一个应用办事,经由过程向ZDP_BindReq()[definedinZDProfile.h]供给绑定记录所须要的应用办事进口参数(地址和端点)以及簇标识号(clusterID),即可启动委托绑定的申请。第一个参数(消息发送目标地址)是绑定源节点的短地址(即保存绑定记录的节点地址,这是因为ZDP需委托应用框架AF帮助实现绑定,若是节点本身是REFLECTOR,并且保存绑定记录,则此消息发送的目标地址就是本地的AF,这与目标节点的地址DestinationAddrofReceivingdevice不合)。 重视事项: 确保[ZDConfig.h]中ZDO_BIND_UNBIND_REQUEST特点已经打开! 你可以经由过程ZDP_UnbindReq()(应用雷同参数)来移除绑定记录。 被恳求帮助绑定的目标设备会返回的ZDO申请绑定或者解除绑定的应答消息。此ZDO消息会被解析并经由过程调用ZDApp_BindRsp()或ZDApp_UnbindRsp()告诉ZDApp.c此次恳求的成果。 对于申请绑定的应答消息,从调和器返回的状况可能有ZDP_SUCCESS,ZDP_TABLE_FULLorZDP_NOT_SUPPORTED。 对于解除绑定的应答消息,从调和器返回的状况可能有ZDP_SUCCESS,ZDP_NO_ENTRYorZDP_NOT_SUPPORTED。 绑定是由外部的设备创议(“外部”的意思是创议绑定的不是绑定的对象之一)。 外部设备应用法度以两个应用办事(地址和端点)和簇标识符作为参数调用ZDP_BindReq()创议绑定。第一个参数就是绑定记录保存的设备地址。 确保编译选项REFLECTOR已经打开! 函数解析: ZDP_BindReq()实际上是调用ZDP_BindUnbindReq()的一个宏。这一调用会产生并发送一个绑定的恳求,使得ZigBee调和器按照簇标识号clusterID对响应的应用办事实验绑定。 函数原型: afStatus_tZDP_BindReq(zAddrType_t*dstAddr,byte*SourceAddr,byteSrcEPIntf,byteClusterID,byte*DestinationAddr ,byteDstEPIntf,byteSecuritySuite) 参数细节: DstAddr-消息发送地址(负责绑定的设备地址) SourceAddr–源节点的64位IEEE地址 SrcEPIntf–源节点应用办事的端点 ClusterID–须要绑定的簇标识符 DestinationAddr–目标节点的64位IEEE地址 DstEPIntf–目标节点应用办事的端点 SecuritySuite-安然机制模式 返回值:afStatus_t–此函数须要借助AF发送(AF_DataRequest())生成的消息,是以返回值是AF状况值。 ZigBee设备对象终端节点绑定恳求-两个设备可向调和器告诉他们想建树一个绑定表记录。调和器经由过程安排配对并分别在这两个设备上建树绑定表条目,也称集中式绑定。 这一机制规定在指定的时限内,经由过程按键或者其他类似动尴尬刁难指定的设备实验绑定。在规定的时限内,调和器负责收集终端设备绑定恳求消息,然后按照雷同的设备文件标识号和簇标识号建树响应的绑定表格条目。默认的终端节点绑按时限(APS_DEFAULT_MAXBINDING_TIME)是16秒(在nwk_globals.h中定义),若要批改可在f8wConfig.cfg中新增数值。 所有例子的应用办事中都有一个响应按键事务的函数(例如,TransmitApp.c中的TransmitApp_HandleKeys())。这一响应函数调用ZDApp_SendEndDeviceBindReq()[在ZDApp.c中]收集该应用办事端点的所有信息,然后再调用ZDP_EndDeviceBindReq()[在ZDProfile.c中]把信息发送给调和器。或者,像SampleLight和SampleSwitch例程中,按键后直接调用ZDP_EndDeviceBindReq(),仅把与开关灯函数相干的簇标识号发送出去。 这一消息将会被调和器接管[ZDP_IncomingData()inZDProfile.c]和解析[ZDO_ProcessEndDeviceBindReq()inZDObject.c],然后让回调函数ZDApp_EndDeviceBindReqCB()[inZDApp.c]调用ZDO_MatchEndDeviceBind()[ZDObject.c]处理惩罚这一恳求。 当调和器接管到第一个绑定恳求时,他会在必然的时限内保存这一恳求并守候第二个恳求的呈现。(默认的最长时候间隔是16秒)。 一旦调和器接管到两个须要匹配的终端设备绑定恳求时,它就会启动绑定过程,为发出恳求的设备建树源绑定条目。假设在ZDO终端设备绑定恳求中找到匹配,调和器将采取以下步调: 1.调和器发送一个ZDO解除绑定恳求给第一个设备。终端设备绑定是一个切换过程,所以解除绑定恳求须要发送给第一个设备,以便移除一个已有的绑定条目。 2.守候ZDO解除绑定的应答,若是返回的状况是ZDP_NO_ENTRY,调和器可以发送一个ZDO绑定恳求,在源设备(ZDP_EndDeviceBindReq()第一个参数指定的地址)中建树绑定条目。假如此时返回的状况是ZDP_SUCCESS,可持续处理惩罚第一个设备的簇标识符(解除绑定指令已经移除了绑定条目,即已经切换完成)。 3.守候ZDO绑定应答。收到今后,持续处理惩罚第一个设备的下一个簇标识符。 4.等第一个设备完成了今后,在第二个设备上实验同样的过程。 5.等第二个设备也完成了,调和器向两个设备发送ZDO终端设备绑定应答消息。 重视打开编译选项:REFLECTOR和ZDO_COORDINATOR ZDApp_SendEndDeviceBindReq() 长处: 1.绑定信息保存在收集反射设备(例如调和器、路由器)中,可以节俭目标设备的内存空间。 2.收集反射设备老是处于收集的状况。所以,若是此中一个被绑定的节点广播收集地址改变的消息,收集反射设备就可以即速更新响应的绑定表条目。如许,其他被绑定的节点即使处于休眠状况(没有收到该节点收集地址改变的消息),随后向该节点(收集地址已改变)发送的消息,(在)收集反射设备(协助下)仍能准断定位。 毛病: 1.一个与多个设备绑定的节点不克不及只向一个或若干个配对的设备发送消息。收集反射设备会向全部已绑定的设备本别发送单播消息。 2.发送消息的设备无法收到目标设备接管景象的布告。(没有像AF_ACK_REQUEST标记位那样返回接管景象的功能!) 3.所有的消息必须经过收集反射设备传输,降落了收集的带宽。 进一步解析: 与六个设备绑定的某个设备,向收集反射器发送一个消息后,会导致反射器发送六个单播消息。假设一个收集被分成两个相等的地理区域A和B,收集反射器在两区之间的中心。若是发送消息的设备在A区的深处,接管消息的(六个)设备在B区的深处,那么每次经由过程绑定(向反射器)发送一个消息,A区的收集流量将会是对六个接管设备分别发送消息时的六分之一。(这是长处!)但若是发送和接管的设备都附近在一个区的深处(假设离反射器很远),那么(此中一个设备经由过程反射器的绑定功能想其他设备发送一个消息)该区的收集流量将会是对六个接管设备分别发送单跳消息的很多倍。(这是毛病!) 设备的应用办事-设备上的一个应用办事可以建树或者保护一个绑定表。进入设备上绑定条目标另一种办法是由应用办事本身去经管绑定表。 这意味着应用办事经由过程调用以下的绑定表经管函数,可以在本地进入或者移除绑定表的条目。 经管绑定表应用的API: bindAddEntry()–绑定表中加条目 bindRemoveEntry()–绑定表中移除条目 bindRemoveClusterIdFromList()–从一个已有的绑定表条目中移除一个簇标识符 bindAddClusterIdToList()–在一个已有的绑定表条目中参加一个簇标识符 bindRemoveDev()–移除某目标地址的所有条目 bindRemoveSrcDev()–移除某源地址的所有条目 bindUpdateAddr()–更新条目到新的地址 bindFindExisting()–查找一个绑定条目 bindIsClusterIDinList()–在绑定条目中查找一个已有的簇标识符 bindNumBoundTo()–某一地址(源地址或目标地址)绑定条目标个数 bindNumOfEntries()–绑定表条目标个数 bindCapacity()–容许的最大绑定条目数 BindWriteNV()–在NV中保存新的绑定表 WhichBindingMethodToUse? 我们应当选择哪一种绑定体式格式? Automatic +nouserinteractionrequired +notoolcost -developmenttimeknowledge -non-configurable Assisted +install-timedecisions(site-specificknowledge) +analysis,maintenance,modification,visualization canbeunderinstallerscontrol -costoftool Centralized +allowsusertodecide +costoftoolminimal -few,ifany,configurableparameters -requiresauserinterfaceoneachdevice Application +maximumflexibility -youmustwriteallthecode 【编辑推荐】
【义务编辑:于爽 TEL:(010)68476606】
MRMY |
|