设备信息
提供方可以通过 消息流向搜索方通知设备信息。
| 消息组名称 | 值 |
|---|---|
| 设备信息事件 | 0x03 |
| 设备信息代码名称 | 值 |
|---|---|
| 模型 ID | 0x01 |
| BLE 地址已更新 | 0x02 |
| 电池已更新 | 0x03 |
| 剩余电池时间 | 0x04 |
| 活跃组件请求 | 0x05 |
| 活跃组件响应 | 0x06 |
| (已废弃)功能 | 0x07 |
| 平台类型 | 0x08 |
| 固件版本 | 0x09 |
| 当前 FHN 临时标识符 | 0x0B |
模型 ID
当消息流连接时,应将模型 ID 信息(用于
追溯写入 AccountKey)
发送给搜索方。例如,0x03010003AABBCC 将是:
- 0x03:设备信息事件
- 0x01:模型 ID 值
- 0x0003:其他数据,长度为 3
- 0xAABBCC:其他数据,模型 ID
BLE 地址
如果提供方可以获取 BLE 地址信息(用于追溯写入 AccountKey),则还应在消息流连接时以及每次地址轮换时将该信息发送给搜索方。例如,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 字节)