Create generic blelib subsystem
- Dominant language
- Python
- Stars
- 14
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Description
## Overview
As part of modernizing our ble support and enabling support for ble hardware other than the bled112 dongle, we need to split our bluetooth stack into two parts:
- A high level DeviceAdapter that interacts with generic BLE concepts: GATT attributes, handles, advertisements, etc.
All of our TileBus functionality would be expressed in terms of these concepts. For example, sending an RPC is two ble "write without response" followed by two notifications of the result. All actual hardware interactions would be abstracted behind an `AbstractBLECentral` that specifies the actions that any ble stack needs to provide.
Given the clear hardware abstraction, this would allow us to test all of the higher level procedures using an emulated `BLECentral` and make sure they are robust without reference to specific hardware. The individual hardware then would only need to guarantee that it implemented each operation correctly.
- A set of low level drivers for specific ble hardware that we support. Currently, we would only have a driver for the `bled112` dongle but the goal would be to expand that.

Contributor guide
Assessment
This issue has not been assessed yet.