This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to allow Bonding when a button is pressed?

I'm using SDK 7.1, PCA10028 eval board, SD310 2.0.1

My application has no display, and a single button for input. I want to prevent bonding until the button is pressed. Looking at Nordic's documentation I found 1 sequence chart that shows bonding, this chart seems to be for "just works" bonding. Is there a sequence chart for bonding with a static passkey?

Looking through the example projects, most have either "just works" bonding, or bonding with display and entry peripherals.

What is the best approach for this project, with regards to bonding? Do I use a static passkey (hard-coded into the firmware) and when the button is pressed load it?

Is there a good example project that does something like this?

-Clint

  • Here it is, but this is from the S110 SoftDevice documentation.

    Please have a look at this example, it implements static passkey.

    How to allow bonding when a button is pressed seemed to be answered here.

  • Nullpointer - My application involves controlling a device in the home. We want to allow multiple devices to be able to connect - for example Husband's phone, Wife's phone and maybe a tablet or two (I know only one device will be connected at a time). We want to prevent bonding, unless someone has physical access to the device (hence the button press). I'm still quite new to BLE, but my understanding is, once the white list is created, the device will only advertise for, and accept connections with centrals on the white list. How are new devices be added to the white list? In other words - I buy a new tablet, what's the process to get it added to the white list?

  • Petter - I've looked at that - with my device I have only 1 button - when I set up my security parameters I have the following choices:

    BLE_GAP_IO_CAPS_DISPLAY_ONLY // I don't have a display

    BLE_GAP_IO_CAPS_DISPLAY_YESNO // I don't have a display - I have a "yes" button, but not a "no"

    BLE_GAP_IO_CAPS_KEYBOARD_ONLY // I don't have Keyboard

    BLE_GAP_IO_CAPS_NONE // "just works" but I want to require a button press

    BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY // I don't have a Keyboard, or a display

    Which of these do I choose? I think the correct route is to set up static passkey, but I'm having problems figuring out how to make my device prevent bonding, until the button is pressed.

  • Hi ccook, I have to do something very similar, for the time being I read only the theory and I haven't implemented yet, I think that is how it works: 2) The device will have 2 buttons (1 for bonding, 1 for delete all bondings)

    1. The device normally adversite in WHITE_LIST_MODE (so, no one can bond it, because no one is in the list)
    2. You push a button in the BLE device, and the device advertise in normal mode, so then you can bond your tablet, iphone, etc... for the future when the device advertise in WHITE_LIST_MODE
    3. Pushing the second button DELETE_ALL_BONDINGS, will unbond all the devices previously bonded...

    so, whenever you push Button1 in the BLE device you can add new phones, tablets, etc...

    you can check this example ....\nrf51822\Board\nrf6310\s110\ble_app_proximity included in the SDK

Related