可以通过调用函数 BDB_eFbTriggerAsInitiator() 在发起节点上启动发现和绑定(该函数可以作为节点上的用户操作的结果而被调用,例如按下按钮)。发起者会在发现和绑定模式中保持一个固定的时间间隔,该时间间隔由常数 BDBC_MIN_COMMISSIONING_TIME 定义。如果发现和绑定在此时间内不成功,则会生成事件 BDB_EVENT_FB_TIMEOUT 并传递到回调函数 APP_vBdbCallback() 中。

一旦开始发现和绑定,发起节点通过周期性地(以秒为单位)广播一个标识查询(Identify Query)命令来搜索目标端点,其周期通过宏 BDB_FB_RESEND_IDENTIFY_QUERY_TIME 定义。

Note:在每个广播尝试之前,事件 BDB_EVENT_FB_NO_QUERY_RESPONSE 会被生成,并传递到 APP_vBdbCallback() 中,以便让应用程序有机会退出当前的发现和绑定过程(见下文)。

如果发起者接收到来自远程端点的标识查询响应,则应用程序必须使用函数 BDB_vZclEventHandler() 将 ZCL 事件 BDB_E_ZCL_EVENT_IDENTIFY_QUERY 传递给 BD(基础设备)。这将允许 BD 通过向相关端点发送简单描述符(Simple Descriptor)请求来收集关于标识设备的信息。如果成功接收到所请求的简单描述符,则回调函数会检查这个描述符的簇是否与发起者相匹配。通过传入 APP_vBdbCallback() 的 BDB_EVENT_FB_HANDLE_SIMPLE_DESC_RES _OF_TARGET 事件来通知应用程序。

如果至少有一个匹配的簇,发起者会执行以下的操作之一:

  • 如果需要绑定(通过 u16bdbCommissioningGroupID 属性等于 0xFFFF 来指示),发起者将远程端点添加到本地绑定表中(但可能首先需要请求远程节点的 IEEE/MAC 地址)。
  • 如果需要入组(通过 u16bdbCommissioningGroupID 属性等于 16-bit 组地址来指示),发起者将请求目标端点将组地址添加到其组地址表中。

通过以下事件来通知应用程序(是否)成功绑定或入组:

  • 绑定:

    • BDB_EVENT_FB_BIND_CREATED_FOR_TARGET 为成功

    • BDB_EVENT_FB_ERR_BINDING_FAILED 为失败

  • 入组:

    • BDB_EVENT_FB_GROUP_ADDED_TO_TARGET 为成功

    • BDB_EVENT_FB_ERR_GROUPING_FAILED 为失败

此时,应用程序可以通过调用 Identify 簇函数 eCLD_IdentifyCommandIdentifyRequestSend() 来请求将标识模式周期设置为零,以远程停止目标节点上的标识模式(因为发现和绑定的)。

可以使用函数 BDB_vFbExitAsInitiator() 来停止在发起端点上的发现和绑定过程。回调函数 APP_vBdbCallback() 典型地调用此函数,以作为用户操作的结果,例如按下按钮或释放按钮。

results matching ""

    No results matching ""