iotile / iotile/coretools

Create generic blelib subsystem

Open
#924 0 comments 0 reactions 0 assignees View on GitHub
Epic
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.

![image.png](https://images.zenhubusercontent.com/5d56f068ee0df960ffef6bc3/2ada8172-a296-481c-bed5-f24ac524bf43)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.