2.2.4 Finding and Binding
- Finding and Binding mode允许两个node之间配对。
- 通过attribute u8bdbCommissioningMode来使能。
- A node can have one of two roles:
- Initiator: node 可以与远端的endpoint建立绑定或者请求远端的endpoint加入到group;
- Targer: This node identifies itself, and receives and responds to requests from the initator
- Local endpoint所扮演的role决定了Finding and Binding process 的方法。
2.2.4.1 Initiator Node
- 调用BDB_eFbTriggerAsInitiator()函数来启动initiator node的Finding and Binding。
- Initiator 会保持Finding and Binding mode 一段时间;通过constant BDBC_MIN_COMMISSIONING_TIME设置。
- 如果规定时间内没完成,在APP_vBdbCallback()函数返回BDB_EVENT_FB_TIMEOUT事件。
- 一旦Finding and Binding 开始,initiator node通过在一定时间内broadcasting(广播)一个Identify Query command搜索target endpoints,时间由BDB_FB_RESEND_IDENTIFY_QUERY_TIME设置。
- 如果initiator收到remote endpoint的Identify Query response,application 必须把ZCL event BDB_E_ZCL_EVENT_IDENTIFY_QUERY用BDB_vZclEventHandler()函数送到Base Device。
- Base Device会向相关的endpoint发送一个simple Descriptor request。
- 如果收到response,并且检查与initiator cluster一致,APP_vBdbCallback()返回BDB_EVENT_FB_HANDLE_SIMPLE_DESC_RESP_OF_TARGET事件。
- 如果cluster匹配,initiator动作如下:
- 如果要求binding(attribute u16bdbCommissioningGroupID = 0xFFFF),initiator将remote endpoint加入local binding table。
- 如果要求grouping(u16bdbCommissioningGroupID = 16-bit group address),initiator会要求target endpoint将group address 加入Group Address tabel。
- Binding
BDB_EVENT_FB_BIND_CREATED_FOR_TARGETfor success;
BDB_EVENT_FB_ERR_BINDING_FAILEDfor failure;
Grouping:
BDB_EVENT_FB_GROUP_ADDED_TO_TARGETfor success;
BDB_EVENT_FB_ERR_GROUPING_FAILEDfor failure;
- Target node可以调用eCLD_IdentifyCommandIdentifyRequestSend()函数来终止identification mode。
- initiator可以调用BDB_vFbExitAsInitiator()函数来终止Finding and Binding 过程,推荐在APP_vBdbCallback()中配合事件调用。
2.2.4.2 Target Node
- Finding and Binding 也可以在target node上调用BDB_eFbTriggerAsTarget()来启动。
- Target node 在固定时间段内用Identify cluster进入identification mode。时间用u16IdentifyTime设置。
- 在identification mode,the cluster能够响应Identify Query commands和Finding and Binding commands。
- 固定时间一到,cluster不能处理Identify Query commands 但是可以响应来自initiator的binding/grouping commands。
- A target node 退出Finding and Binding 过程有以下两种方式:
- 调用BDB_vFbExitAsTarget();
- Remote application ( initiator) 可以调用Identify cluster function Ecld_IdentifyCommandIdentifyRequestSend()函数来请求终止identification mode,application 必须用BDB_vZclEventHander()传ZCL event BDB_E_ZCL_EVENT_IDENTIFY 到Base Device。