设备信息
提供商可以通过消息流向查找者发送设备信息。
消息群组名称 | 值 |
---|---|
设备信息事件 | 0x03 |
设备信息代码名称 | 值 |
---|---|
模型 ID | 0x01 |
BLE 地址已更新 | 0x02 |
电池已更新 | 0x03 |
剩余电池续航时间 | 0x04 |
有效组件请求 | 0x05 |
活跃组件响应 | 0x06 |
(已废弃)功能 | 0x07 |
平台类型 | 0x08 |
固件版本 | 0x09 |
当前的 FHN 暂时标识符 | 0x0B |
模型 ID
在 RFCOMM 连接时,应将模型 ID 信息(用于回溯写入 AccountKey)发送给 Seeker。例如,0x03010003AABBCC
将为:
- 0x03:设备信息事件
- 0x01:模型 ID 值
- 0x0003:其他数据,长度为 3
- 0xAABBCC:其他数据、模型 ID
BLE 地址
在 RFCOMM 连接时以及每次轮替地址时,还应向 Seeker 发送 BLE 地址信息(用于回溯写入 AccountKey),如果有的话。例如,0x03020006AABBCCDDEEFF
将为:
- 0x03:设备信息事件
- 0x02:BLE 地址值
- 0x0006:其他数据,长度为 6
- 0xAABBCCDDEEFF:其他数据,BLE 地址
电池已更新
对于支持电池通知的提供程序,还可以通过 RFCOMM 发送电池信息。当 RFCOMM 连接或电池值发生变化时,应发送更新。通过 BLE 广告电池数据时,数据包的额外数据部分应包含与字节 s + 2、s + 3、s + 4 相同的数据。例如,0x0303000357417F
将为:
- 0x03:设备信息事件
- 0x03:电池电量
- 0x0003:其他数据,长度为 3
- 0x57417F:其他数据、电池值
- 0x57:左侧耳机值,未在充电,电池电量为 87%
- 0x41:右侧耳机值,未在充电,电池电量为 65%
- 0x7F:充电盒值,未充电,电池电量未知
提供程序还可以更新剩余电池电量(如果已知)。例如,0x03040001F0
将为:
- 0x03:设备信息事件
- 0x04:电池剩余时间
- 0x0001:其他数据,长度为 1(如有需要,uint16 可以为 2)。
- 0xF0:其他数据,电池剩余时间(以分钟为单位),240 分钟
有效组件
查找者有时可能希望了解哪些组件当前处于活动状态,也就是说,可以对这些组件执行操作(请参阅设备操作)。当提供程序收到包含活动组件请求代码 (0x05) 的请求时,应在 1 秒内返回一个响应,指明提供程序的当前状态。响应将使用有效组件响应代码 (0x06),并包含指示哪些组件可用的其他数据。
对于只有一个组件的提供程序,如果没有额外数据,则应将其设置为 0x00。例如,在不会执行媒体播放的低功耗模式下。否则,应将其他数据设置为 0x01。
对于包含多个组件(例如左侧和右侧耳机)的耳机,额外数据中的每个位都表示相应组件的活动状态。非活跃组件的示例可能是处于耳机盒中且未使用的耳机。具体而言,左侧耳机和右侧耳机的耳机盒:
- 0x00 (0b00000000):两个耳机均未处于活动状态
- 0x01 (0b00000001):右耳机处于活动状态,左耳机处于非活动状态
- 0x02 (0b00000010):左侧耳机处于活动状态,右侧耳机处于非活动状态
- 0x03 (0b00000011):两侧耳机均处于开启状态
平台类型
提供商可能希望根据其关联的平台执行不同的操作。快速配对目前仅通过 Android 执行,但未来可能会扩大支持范围。
该消息将包含额外数据中用于标识平台类型的第一字节:
平台名称 | 值 |
---|---|
Android | 0x01 |
第二个字节将根据平台进行自定义。在 Android 中,它将引用 SDK 版本。例如,Android Pie 的值为 28 (0x1C)。
固件版本
提供商的固件版本(采用 UTF-8 编码的字符串)。 此信息与固件修订版本特征中的信息相同。
当前 FHN 暂时标识符
通告 FHN 帧的提供程序应报告当前的 FHN 暂时标识符 (EID) 及其当前的时钟值,以便在时钟漂移(例如因电池电量耗尽而导致)时与 Seeker 同步。
例如:
- 0x03:设备信息事件
- 0x0B:当前 FHN 暂时性标识符消息
- 0x0018:额外数据,长度为 24 或 36 字节
- 0x13F9EA80:其他数据(时钟值;4 字节)
- 0x1122334455667788990011223344556677889900:其他数据(当前 EID;20 或 32 字节)