110 lines
3.6 KiB
Plaintext
110 lines
3.6 KiB
Plaintext
Bluetooth subsystem
|
|
|
|
= Building =
|
|
|
|
Build samples
|
|
|
|
$ make -C samples/bluetooth/<app>
|
|
|
|
= Bluetooth Sample application =
|
|
|
|
Host Bluetooth controller is connected to the second qemu serial line
|
|
through a UNIX socket (qemu option -serial unix:/tmp/bt-server-bredr).
|
|
This option is already added to qemu through QEMU_EXTRA_FLAGS in Makefile.
|
|
|
|
On the host side BlueZ allows to "connect" Bluetooth controller through
|
|
a so-called user channel. Use the btproxy tool for that:
|
|
|
|
$ sudo tools/btproxy -u
|
|
Listening on /tmp/bt-server-bredr
|
|
|
|
Note that before calling btproxy make sure that Bluetooth controller is down.
|
|
|
|
Now running qemu result connecting second serial line to 'bt-server-bredr'
|
|
UNIX socket. When Bluetooth (CONFIG_BLUETOOTH) and Bluetooth HCI UART driver
|
|
(CONFIG_BLUETOOTH_H4) are enabled, Bluetooth driver registers to the system.
|
|
From now on Bluetooth might be used by the application. To run application in
|
|
the qemu run:
|
|
|
|
$ make qemu
|
|
|
|
= Bluetooth sanity check =
|
|
|
|
There is smoke test application in tests directory which gets run in sanity
|
|
check script:
|
|
|
|
$ scripts/sanity_chk/sanitycheck [-P <platform>]
|
|
|
|
To only run Bluetooth tests use the -t bluetooth switch:
|
|
|
|
$ scripts/sanity_chk/sanitycheck -t bluetooth
|
|
|
|
= Summary of available applications =
|
|
|
|
beacon:
|
|
A simple application demonstrating the BLE Broadcaster role
|
|
functionality by advertising an Eddystone URL (the Zephyr
|
|
website).
|
|
|
|
central:
|
|
Application demonstrating very basic BLE Central role
|
|
functionality by scanning for other BLE devices and establishing
|
|
a connection to the first one with a strong enough signal.
|
|
|
|
central_hr:
|
|
Similar to 'central', except that this application specifically
|
|
looks for heart-rate monitors and reports the heart-rate
|
|
readings once connected.
|
|
|
|
eddystone:
|
|
Application demostrating Eddystone Configuration Service:
|
|
https://github.com/google/eddystone/tree/master/configuration-service
|
|
|
|
gatt:
|
|
Not an application, but a set of reusable modules for common
|
|
GATT profiles & services.
|
|
|
|
hci-uart:
|
|
Expose Zephyr Bluetooth Controller support over UART to another
|
|
device/CPU using the H:4 HCI transport protocol (requires HW
|
|
flow control from the UART).
|
|
|
|
hci-usb:
|
|
Make a USB Bluetooth dongle out of Zephyr. Requires USB device
|
|
support from the board it runs on (e.g. Arduino 101 has this).
|
|
|
|
ipsp:
|
|
Application demonstrating the IPSP (Internet Protocol Support
|
|
Profile) Node role. IPSP is the Bluetooth profile that
|
|
underneath utilizes 6LoWPAN, i.e. gives you IPv6 connectivity
|
|
over BLE.
|
|
|
|
peripheral:
|
|
Application demonstrating the BLE Peripheral role. It has
|
|
several well-known and vendor-specific GATT services that it
|
|
exposes.
|
|
|
|
peripheral_csc:
|
|
Similar to 'peripheral', except that this application
|
|
specifically exposes the CSC (Cycling Speed and Cadence)
|
|
GATT Service.
|
|
|
|
peripheral_dis:
|
|
Similar to 'peripheral', except that this application
|
|
specifically exposes the DIS (Device Information) GATT Service.
|
|
|
|
peripheral_esp:
|
|
Similar to 'peripheral', except that this application
|
|
specifically exposes the ESP (Environmental Sensing Profile)
|
|
GATT Service.
|
|
|
|
peripheral_hr:
|
|
Similar to 'peripheral', except that this application
|
|
specifically exposes the HR (Heart Rate) GATT Service. Once a
|
|
device connects it will generate dummy heart-rate values.
|
|
|
|
peripheral_hids:
|
|
Similar to 'peripheral', except that this application
|
|
specifically exposes the HID GATT Service. The report map used
|
|
is for a generic mouse.
|