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.
