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

#1572 in Embedded development

Download history 1177/week @ 2024-07-23 863/week @ 2024-07-30 745/week @ 2024-08-06 540/week @ 2024-08-13 536/week @ 2024-08-20 697/week @ 2024-08-27 703/week @ 2024-09-03 837/week @ 2024-09-10 969/week @ 2024-09-17 787/week @ 2024-09-24 857/week @ 2024-10-01 1094/week @ 2024-10-08 952/week @ 2024-10-15 1234/week @ 2024-10-22 672/week @ 2024-10-29 462/week @ 2024-11-05

3,459 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

~595KB