Gazell Dynamic Pairing Host
This sample shows the Host role for the functionality of the Gazell Pairing subsystem. As a single sample, the Host receives packets from the Device and transmits acknowledgements with the payload. Follow the instructions and use the files from this page, and the Gazell Dynamic Pairing Device sample.
Requirements
Note
Follow the steps from and include the Gazell Dynamic Pairing Device sample with this sample.
The sample supports the following development kits:
Hardware platforms |
PCA |
Board name |
Build target |
---|---|---|---|
PCA10056 |
|
||
PCA10100 |
|
||
PCA10040 |
|
You can use any two of the development kits listed above and mix different development kits.
Overview
This sample demonstrates the Gazell Pairing protocol. It consists of two applications, a Device and a Host.
- Device
The application sends packets continuously. If a packet transmission fails (either times out or encryption fails), the Device makes an attempt to pair with a Host by sending a pairing request, consisting of an “address request” and a “Host ID” request. If the Device is paired with a Host, the pairing data is stored into the non-volatile memory. Before adding a packet to the TX queue, the content of the buttons is copied to the first payload byte (byte 0). The application alternates between sending the packets encrypted through the pairing library or directly as plaintext.
- Host
The application listens for packets continuously, monitoring for pairing requests as well as normal user data. The Gazell pairing library uses pipe 0 and pipe 1 for encrypted communication. The application grants any request for a Host ID, thus granting pairing. Unencrypted packets can be received on pipe 2. When the Host has received data, the content of the first payload byte is output to the LEDs.
The Host automatically accepts the pairing request and receives both types of packets from the Device and displays its buttons state on the LEDs. You can use this sample to learn how to use the Gazell Pairing subsystem to establish a secure link between two devices over the Gazell protocol.
User interface
Device
- Button 1-4:
The button pressed state bitmask is sent to the other kit. A button pressed is sent as 0 and a button released is sent as 1.
Host
- LED 1-4:
Indicate that packets are received. A LED is turned off when the corresponding button is pressed on the other kit.
Building and running
The Device sample is under samples/gazell/gzp_dynamic_pairing_device
in the nRF Connect SDK folder structure.
The Host sample is under samples/gazell/gzp_dynamic_pairing_host
in the nRF Connect SDK folder structure.
See Building and programming an application for information about how to build and program the application.
Testing
After programming the Device sample on one of the development kits and the Host sample on the other kit, complete the following steps to test them:
Power on both kits.
Observe that all the LEDs are off on both kits.
Place the kits next to each other for Gazell pairing.
Observe that the Host sample turns on all LEDs.
It indicates that the pairing is done.
Press Button 2 for the Device sample.
Observe that the Host sample turns off LED 2 on the other kit.
Dependencies
This sample uses the following nRF Connect SDK libraries:
It uses the following nrfxlib library:
It uses the following Zephyr libraries:
include/zephyr/types.h
-
include/kernel.h