Lines Matching +full:host +full:- +full:interface
1 .. _bluetooth-arch:
13 Zephyr supports mainly Bluetooth Low Energy (BLE), the low-power
15 for portions of the BR/EDR Host. Throughout this architecture document we
18 .. _bluetooth-layers:
26 * **Host**: This layer sits right below the application, and is comprised of
27 multiple (non real-time) network and transport protocols enabling
31 low-level, real-time protocol which provides, in conjunction with the Radio
32 Hardware, standard-interoperable over-the-air communication. The LL schedules
39 .. _bluetooth-hci:
41 Host Controller Interface
44 The `Bluetooth Specification`_ describes the format in which a Host must
45 communicate with a Controller. This is called the Host Controller Interface
47 transports like UART, SPI, or USB. This protocol defines the commands that a Host
50 ensures that different Host and Controller implementations can communicate
54 .. _bluetooth-configs:
59 The three separate layers of the protocol and the standardized interface make
60 it possible to implement the Host and Controller on different platforms. The two
63 * **Single-chip configuration**: In this configuration, a single microcontroller
65 system-on-chip (SoC) implementation. In this case the BLE Host and the BLE
68 single-chip configuration and so how HCI commands, events, and data flows between
69 the two can be implementation-specific. This configuration is well suited for
72 * **Dual-chip configuration**: This configuration uses two separate ICs,
73 one running the Application and the Host, and a second one with the Controller
74 and the Radio Hardware. This is sometimes also called a connectivity-chip
77 interoperability among Host and Controller implementations, including of course
78 Zephyr's very own BLE Host and Controller, users of the Zephyr Controller can
79 choose to use whatever Host running on any platform they prefer. For example,
80 the host can be the Linux BLE Host stack (BlueZ) running on any processor
81 capable of supporting Linux. The Host processor may of course also run Zephyr
82 and the Zephyr OS BLE Host. Conversely, combining an IC running the Zephyr
83 Host with an external Controller that does not run Zephyr is also supported.
85 .. _bluetooth-build-types:
94 BLE-enabled builds that can be produced from the Zephyr project codebase:
96 * **Controller-only build**: When built as a BLE Controller, Zephyr includes
100 * :zephyr:code-sample:`bluetooth_hci_uart`
101 * :zephyr:code-sample:`bluetooth_hci_usb`
102 * :zephyr:code-sample:`bluetooth_hci_spi`
116 * **Host-only build**: A Zephyr OS Host build will contain the Application and
117 the BLE Host, along with an HCI driver (UART or SPI) to interface with an
127 sure that the ``zephyr,bt-hci`` device tree chosen property points at it.
130 used for Controller-only builds can be built as Host-only
132 * **Combined build**: This includes the Application, the Host and the
133 Controller, and it is used exclusively for single-chip (SoC) configurations.
143 used for Controller-only builds can be built as Combined
145 The picture below shows the SoC or single-chip configuration when using a Zephyr
146 combined build (a build that includes both a BLE Host and a Controller in the
153 A Combined build on a Single-Chip configuration
155 When using connectivity or dual-chip configurations, several Host and Controller
160 :alt: BLE dual-chip configuration builds
162 Host-only and Controller-only builds on dual-chip configurations
164 When using a Zephyr Host (left side of image), two instances of Zephyr OS
166 must be programmed into each of the chips respectively. The Host build image
167 contains the application, the BLE Host and the selected HCI driver (UART or
169 :zephyr:code-sample:`bluetooth_hci_uart`, or the
170 :zephyr:code-sample:`bluetooth_hci_spi` app to provide an interface to
173 This configuration is not limited to using a Zephyr OS Host, as the right side
175 distributions, most of which include Linux's own BLE Host (BlueZ), to connect it
177 BlueZ as a Host supports multiple Controllers simultaneously for applications
179 same Host stack.
186 ``subsys/bluetooth/host``
187 :ref:`The host stack <bluetooth_le_host>`. This is where the HCI command and
192 :ref:`Bluetooth LE Controller <bluetooth-ctlr-arch>` implementation.
193 Implements the controller-side of HCI, the Link Layer as well as access to the
202 the two common types of UART transport protocols (3-Wire and 5-Wire)
206 :zephyr:code-sample-category:`Sample Bluetooth code <bluetooth>`. This is a good reference to
217 .. _Bluetooth Specification: https://www.bluetooth.com/specifications/bluetooth-core-specification