Gazell Dynamic Pairing Device

This sample shows the Device role for the functionality of the Gazell Pairing subsystem. As a single sample, the Device only sends packets and receives acknowledgements from the Host with a 1-byte payload. Follow the instructions and use the files from this page, and the Gazell Dynamic Pairing Host sample.

Requirements

Note

Follow the steps from and include the Gazell Dynamic Pairing Host sample with this sample.

The sample supports the following development kits:

Hardware platforms

PCA

Board name

Board target

nRF52 DK

PCA10040

nrf52dk

nrf52dk/nrf52832

nRF52840 DK

PCA10056

nrf52840dk

nrf52840dk/nrf52840

nRF52833 DK

PCA10100

nrf52833dk

nrf52833dk/nrf52833

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 an application and Programming an application for information about how to build and program the application, respectively.

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:

  1. Power on both kits.

  2. Observe that all the LEDs are off on both kits.

  3. Place the kits next to each other for Gazell pairing.

  4. Observe that the Host sample turns on all LEDs.

    It indicates that the pairing is done.

  5. 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: