zephyr/samples/bluetooth
Johan Hedberg 6989bf88e1 Bluetooth: Rename bt_driver to bt_hci_driver
The bt_driver API was created when Zephyr only had a Bluetooth host
stack, but no controller-side functionality. The only "driver" that
was needed for the host was the HCI driver, and hence "HCI" was
omitted from the name.

With support both for host and controller Zephyr will be getting more
Bluetooth driver types, in particular radio drivers. To prepare for
this, move all HCI drivers to drivers/bluetooth/hci/ and rename the
bt_driver API bt_hci_driver.

Change-Id: I82829da80aa61f26c2bb2005380f1e88d069ac7d
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
2016-10-28 08:09:08 +03:00
..
beacon Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
central Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
central_hr Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
eddystone Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
gatt Bluetooth: GATT: Pass CCC attribute to changed callback 2016-10-21 07:47:31 +03:00
hci-uart Bluetooth: Rename bt_driver to bt_hci_driver 2016-10-28 08:09:08 +03:00
hci-usb Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
ipsp Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
peripheral Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
peripheral_csc Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
peripheral_dis Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
peripheral_esp Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
peripheral_hids Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
peripheral_hr Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
peripheral_sc_only Bluetooth: samples: Remove redundant CONFIG_ARC_INIT=n 2016-10-28 08:09:08 +03:00
README Bluetooth: samples/README: Document hci-usb and hci-uart 2016-10-28 08:09:08 +03:00

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 nanokernel and microkernel test
directories 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.