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

#1822 in Embedded development

Download history 673/week @ 2024-11-15 742/week @ 2024-11-22 685/week @ 2024-11-29 609/week @ 2024-12-06 562/week @ 2024-12-13 554/week @ 2024-12-20 605/week @ 2024-12-27 760/week @ 2025-01-03 838/week @ 2025-01-10 864/week @ 2025-01-17 895/week @ 2025-01-24 915/week @ 2025-01-31 705/week @ 2025-02-07 721/week @ 2025-02-14 662/week @ 2025-02-21 485/week @ 2025-02-28

2,687 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

~605KB