Homekit事件上报按照蓝牙连接状态分为以下三种:
1.Connected Events
当Homekit控制器(iPhone)连接到Homekit配件(门锁)可以选择去使能一些特征值的蓝牙indications,当这些特征值更新时,配件(门锁)必须为了这些特征值发送一个长度为0的indication给已连接Homekit控制器(iPhone),这个长度为0的indication必须只能发给已经建立安全连接的Homekit控制器(iPhone),然后Homekit控制器(iPhone)会执行HAP加密读这些特征值
如果是由于Homekit控制器(iPhone)写(门锁)的某些特征值导致特征值的变化,不需要发送indication
在当前连接状态下,蓝牙使能了indication的特征发生第一次特征变化后,GSN也增加1,并在当前连接断开后的后续广告中体现出来。在当前连接状态下,GSN在(门锁)的多个特征值发生变化时只能增加一次。
2.Broadcasted Events
当蓝牙断开状态下,指定用于广播notification的特征相关联的值发生更改时,GSN的值必须每改变一次都递增,并反映在加密广播数据包中,配件必须使用配置的广播间隔去广播这个改变的特征值至少3s
如果Homekit控制器(iPhone)在3S时间内连接到了配件,配件应该终止发送加密的广播,并在断开连接之后重新使用常规广播间隔发送常规广播
如果Homekit控制器(iPhone)在3S时间内没有连接配件,配件需要回调Disconnected Events去更新GSN
如果一些其他的特征值在3s时间内并且未连接到Homekit控制器(iPhone)的情况下发生改变,GSN值必须再次更新,配件必须反映最后一次改变的特征值到加密的广播,并从最后一次特征值改变开始持续广播加密广播3s
3.Disconnected Events
在断开连接状态下,当特征值相关值发生改变时,GSN可以递增并且反映到常规广播中
GSN的值只能增加一次当多个特征值改变在断开连接的情况下直到从断开到连接的过程
设备能支持Disconnect events,如果支持Disconnect events,必须支持connected event和Broadcast Event
配件应该使用disconnected events仅仅用于反馈配件相关的重要状态的改变,可能需要发送提醒给用户,GSN更新后需要在断开连接的状态后使用20ms的广播间隔发送常规广播至少3s