Change Capabilities at Runtime
Since new features (e.g. dynamic buffer sizing) can be enabled by upgrading firmware on the Provider, we want to provide a way to get the capabilities of the Provider at runtime. To avoid repeatedly querying capabilities, first, the Provider should send the firmware revision to the Seeker via message stream when connected. So we add a new message code to the existing message group, device information event.
Message Group Name | Value |
---|---|
Device information event | 0x03 |
Message Code Name | Value |
---|---|
Firmware revision | 0x09 |
Upon getting the firmware revision code, the Seeker shall check it against the cached one. If the firmware revision has been changed, the Seeker will update the firmware revision of the cache and query the capabilities via Message Stream.
We also allow the Provider to directly push capabilities to the Seeker without a request first, because we imagine that, in the future, more sophisticated devices (maybe Android-based) will do dynamic configuration based on flags for the same firmware revision.
So we add below a new message group and message codes.
Message Group Name | Value |
---|---|
Device capability sync event | 0x06 |
Message Code Name | Value |
---|---|
Request capability update (sent from Seeker) | 0x01 |
FMDN tracking | 0x03 |
Upon receiving 0x0601
,
- if the Provider has enabled support for FMDN tracking, it should respond as below:
Octet | Data Type | Description | Value |
---|---|---|---|
0 | uint8 | Device capability sync event | 0x06 |
1 | uint8 | FMDN tracking | 0x03 |
2 - 3 | uint16 | Additional data length | 0x0007 |
4 | uint8 | FMDN provisioning state | 0x00 if unprovisioned; 0x01 if provisioned by any account |
5 - 10 | uint8[] | The current BLE MAC address of the device | varies |