设备信息
提供商可以通过消息流向寻求者通知设备信息。
| 消息组名称 | 值 |
|---|---|
| 设备信息事件 | 0x03 |
| 设备信息代码名称 | 值 |
|---|---|
| 模型 ID | 0x01 |
| BLE 地址已更新 | 0x02 |
| 电池已更新 | 0x03 |
| 剩余电池时间 | 0x04 |
| 有效组件请求 | 0x05 |
| 有效组件响应 | 0x06 |
| (已弃用)功能 | 0x07 |
| 平台类型 | 0x08 |
| 固件版本 | 0x09 |
| 当前 FHN 临时标识符 | 0x0B |
模型 ID
模型 ID 信息(用于追溯写入 AccountKey)应在消息流连接时发送给 Seeker。例如,0x03010003AABBCC 将为:
- 0x03:设备信息事件
- 0x01:模型 ID 值
- 0x0003:其他数据,长度为 3
- 0xAABBCC:其他数据,模型 ID
BLE 地址
如果可用,还应在消息流连接时以及每次地址轮换时将 BLE 地址信息(用于追溯写入 AccountKey)发送给 Seeker。例如,0x03020006AABBCCDDEEFF 将为:
- 0x03:设备信息事件
- 0x02:BLE 地址值
- 0x0006:其他数据,长度为 6
- 0xAABBCCDDEEFF:附加数据,BLE 地址
电池已更新
对于支持电池通知的提供方,电池信息也可以通过消息流发送。当消息流连接或电池值发生变化时,应发送更新。数据包的附加数据部分应包含与通过 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) 和当前时钟值,以便在出现时钟漂移(例如,由于电池耗尽)时与搜索方同步。
例如:
- 0x03:设备信息事件
- 0x0B:当前 FHN 临时标识符消息
- 0x0018:其他数据,长度为 24 或 36 字节
- 0x13F9EA80:其他数据(时钟值;4 个字节)
- 0x1122334455667788990011223344556677889900:其他数据(当前 EID;20 或 32 字节)