embassy-rs / trouble

A Rust Host BLE stack with a future goal of qualification.
Apache License 2.0
118 stars 23 forks source link

trouble

CI

TrouBLE is a Bluetooth Low Energy (BLE) Host implementation written in Rust, with a future goal of qualification. The initial implementation was based on bleps but has been adapted to work with types and traits from bt-hci and adding support for more of the BLE specification such as L2CAP connection oriented channels. The current implementation also takes strong inspiration from the nrf-softdevice project.

What is a Host?

A BLE Host is one side of the Host Controller Interface (HCI). The BLE specification defines the software of a BLE implementation in terms of a controller (lower layer) and a host (upper layer).

These communicate via a standardized protocol, that may run over different transports such as as UART, USB or a custom in-memory IPC implementation.

The advantage of this split is that the Host can generally be reused for different controller implementations.

Hardware support

TrouBLE can use any controller that implements the traits from bt-hci. At present, that includes:

Current status

The implementation has the following functionality working:

See the issues for a list of TODOs.

Minimum supported Rust version (MSRV)

Trouble is guaranteed to compile on stable Rust 1.80 and up. It might compile with older versions but that may change in any new patch release.

Examples

See examples for example applications for different BLE controllers.

Since a lot of the examples demo the same BLE functionality, they only contain basic wiring specific to the BLE controller, and share the 'business logic' within the examples/apps folder.

License

Trouble is licensed under either of

at your option.