4 releases

0.1.0 May 8, 2020
0.0.3 Sep 16, 2018
0.0.2 Sep 15, 2018
0.0.1 Sep 4, 2018

#957 in Embedded development

Download history 4299/week @ 2024-01-10 5011/week @ 2024-01-17 5197/week @ 2024-01-24 4477/week @ 2024-01-31 4152/week @ 2024-02-07 4024/week @ 2024-02-14 3697/week @ 2024-02-21 3424/week @ 2024-02-28 3306/week @ 2024-03-06 2874/week @ 2024-03-13 2452/week @ 2024-03-20 2211/week @ 2024-03-27 2138/week @ 2024-04-03 2013/week @ 2024-04-10 2139/week @ 2024-04-17 1800/week @ 2024-04-24

8,397 downloads per month
Used in ockam_transport_ble

MIT/Apache

395KB
5.5K SLoC

BlueNRG

Build Status

This crate provides the vendor-specific Bluetooth HCI for STMicro's BlueNRG family of Bluetooth RF modules. It extends bluetooth-hci with vendor-specific commands and events (and associated errors).

BlueNRG and BlueNRG-MS

This crate supports both the older BlueNRG version of the HCI, and the newer BlueNRG-MS version. By default, the crate implements BlueNRG-MS.

Work in Progress...

As you will notice, documentation is woefully lacking. This is still (as of April 2018) actively developed, so more is on the way!


lib.rs:

Bluetooth HCI for STMicro's BlueNRG-MS Bluetooth controllers.

Note: This crate does not provide support for the BlueNRG-1 or BlueNRG-2 SoCs.

Design

The BlueNRG-MS is an external Bluetooth Radio Controller that communicates with the application processor over SPI and two dedicated pins:

  1. A SPI chip select pin, and
  2. A data ready signal.

This crate defines a public struct, BlueNRG that owns the chip select and data ready pins, and a receive buffer for the data that comes from the controller. It also defines a private struct, ActiveBlueNRG that borrows a handle to the SPI bus. ActiveBlueNRG implements bluetooth_hci::Controller, which provides access to the full Bluetooth HCI.

BlueNRG-MS implements parts of version 4.1 of the Bluetooth specification.

The fundamental way to use the BlueNRG is its with_spi function, which invokes its closure on at ActiveBlueNRG, so sending HCI commands and reading HCI events can only be done from within that closure.

Vendor-Specific Commands

BlueNRG-MS provides several vendor-specific commands that control the behavior of the controller.

Vendor-Specific Events

BlueNRG-MS provides several vendor-specific events that provide data related to the controller. Many of these events are forwarded from the link layer, and these are documented with a reference to the appropriate section of the Bluetooth specification.

Example

TODO

Dependencies

~590KB