108 lines
3.1 KiB
ReStructuredText
108 lines
3.1 KiB
ReStructuredText
.. _bluetooth:
|
|
|
|
Bluetooth
|
|
#########
|
|
|
|
Zephyr comes integrated with a feature-rich and highly configurable
|
|
Bluetooth stack:
|
|
|
|
* Bluetooth 5.0 compliant (ESR10)
|
|
|
|
* Bluetooth Low Energy Controller support (LE Link Layer)
|
|
|
|
* BLE 5.0 compliant
|
|
* Unlimited role and connection count, all roles supported
|
|
* Concurrent multi-protocol support ready
|
|
* Intelligent scheduling of roles to minimize overlap
|
|
* Portable design to any open BLE radio, currently supports Nordic
|
|
Semiconductor nRF51 and nRF52
|
|
|
|
* Generic Access Profile (GAP) with all possible LE roles
|
|
|
|
* Peripheral & Central
|
|
* Observer & Broadcaster
|
|
|
|
* GATT (Generic Attribute Profile)
|
|
|
|
* Server (to be a sensor)
|
|
* Client (to connect to sensors)
|
|
|
|
* Pairing support, including the Secure Connections feature from Bluetooth 4.2
|
|
|
|
* IPSP/6LoWPAN for IPv6 connectivity over Bluetooth LE
|
|
|
|
* IPSP node sample application in ``samples/bluetooth/ipsp``
|
|
|
|
* Basic Bluetooth BR/EDR (Classic) support
|
|
|
|
* Generic Access Profile (GAP)
|
|
* Logical Link Control and Adaptation Protocol (L2CAP)
|
|
* Serial Port emulation (RFCOMM protocol)
|
|
* Service Discovery Protocol (SDP)
|
|
|
|
* Clean HCI driver abstraction
|
|
|
|
* 3-Wire (H:5) & 5-Wire (H:4) UART
|
|
* SPI
|
|
* Local controller support as a virtual HCI driver
|
|
|
|
* Raw HCI interface to run Zephyr as a Controller instead of a full Host stack
|
|
|
|
* Possible to export HCI over a physical transport
|
|
* ``samples/bluetooth/hci_uart`` sample for HCI over UART
|
|
* ``samples/bluetooth/hci_usb`` sample for HCI over USB
|
|
|
|
* Verified with multiple popular controllers
|
|
|
|
* Highly configurable
|
|
|
|
* Features, buffer sizes/counts, stack sizes, etc.
|
|
|
|
Source tree layout
|
|
******************
|
|
|
|
The stack is split up as follows in the source tree:
|
|
|
|
``subsys/bluetooth/host``
|
|
The host stack. This is where the HCI command & event handling
|
|
as well as connection tracking happens. The implementation of the
|
|
core protocols such as L2CAP, ATT & SMP is also here.
|
|
|
|
``subsys/bluetooth/controller``
|
|
Bluetooth Controller implementation. Implements the controller-side of
|
|
HCI, the Link Layer as well as access to the radio transceiver.
|
|
|
|
``include/bluetooth/``
|
|
Public API header files. These are the header files applications need
|
|
to include in order to use Bluetooth functionality.
|
|
|
|
``drivers/bluetooth/``
|
|
HCI transport drivers. Every HCI transport needs its own driver. E.g.
|
|
the two common types of UART transport protocols (3-Wire & 5-Wire)
|
|
have their own drivers.
|
|
|
|
``samples/bluetooth/``
|
|
Sample Bluetooth code. This is a good reference to get started with
|
|
Bluetooth application development.
|
|
|
|
``tests/bluetooth/``
|
|
Test applications. These applications are used to verify the
|
|
functionality of the Bluetooth stack, but are not necessary the best
|
|
source for sample code (see ``samples/bluetooth`` instead).
|
|
|
|
``doc/subsystems/bluetooth/``
|
|
Extra documentation, such as PICS documents.
|
|
|
|
Further reading
|
|
***************
|
|
|
|
More information on the stack and its usage can be found
|
|
:ref:`here <bluetooth_firmware_arduino_101>` and in the following subsections:
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
../../api/bluetooth.rst
|
|
devel.rst
|
|
qualification.rst
|