在运行时更改功能
由于可以通过升级提供程序中的固件来启用新功能(例如动态缓冲区大小调整),因此我们希望提供一种在运行时获取提供程序功能的方法。为避免重复查询功能,首先,提供程序应在连接后通过消息流将固件修订版本发送给 Seeker。因此,我们向现有消息组的设备信息事件添加了一个新的消息代码。
消息组名称 | 值 |
---|---|
设备信息事件 | 0x03 |
信息代码名称 | 值 |
---|---|
固件版本 | 0x09 |
获得固件修订版本代码后,探索器应对照已缓存的代码进行检查。如果固件修订版本已更改,Seeker 将更新缓存的固件修订版本,并通过消息流查询功能。
我们还允许 Provider 在不先提出请求的情况下直接将功能推送到搜索程序,因为我们认为将来,更复杂的设备(可能是基于 Android)的设备将根据同一固件修订版本的标志进行动态配置。
因此,我们在下方添加新的消息组和消息代码。
消息组名称 | 值 |
---|---|
设备功能同步事件 | 0x06 |
信息代码名称 | 值 |
---|---|
请求功能更新(从 Seeker 发送) | 0x01 |
FMDN 跟踪 | 0x03 |
收到0x0601
后,
- 如果提供方已启用对 FMDN 跟踪的支持,它应做出如下响应:
八位字节 | 数据类型 | 说明 | 值 |
---|---|---|---|
0 | uint8 | 设备功能同步事件 | 0x06 |
1 | uint8 | FMDN 跟踪 | 0x03 |
2-3 个 | uint16 | 额外的数据长度 | 0x0007 |
4 | uint8 | FMDN 配置状态 | 如果未配置,则为 0x00;如果由任何账号配置,则为 0x01 |
5 - 10 | uint8[] | 设备当前的 BLE MAC 地址 | 不固定 |