| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
BSP BLE Button Module
This information applies to the following SoftDevices: S130, S132, S332

The BLE Button Module provides a dynamic configuration of button actions. It is used in most BLE examples in the SDK.

The application must propagate BLE events to the BLE Button Module. Based on these events, the BLE Button Module configures the Board Support Package to generate BSP events for certain button actions. These BSP events should then be handled by the application's BSP event handler.

For example, when the application is connected, long pressing Button 1 generates the event BSP_EVENT_DISCONNECT. The application's BSP event handler should react to this event by performing a disconnect.

The Board Support Package, configured by the BLE Button Module, generates the following events for button actions:

Current state | Button | Action | Event
--- | --- | --- | ---
Sleep | 1 | Push | BSP_EVENT_WAKEUP
Sleep | 2 | Push | BSP_EVENT_CLEAR_BONDING_DATA
Startup | 2 | Hold | BSP_EVENT_CLEAR_BONDING_DATA
Startup | 4 | Hold | BSP_EVENT_DFU
Awake | 2 | Long Push | BSP_EVENT_WHITELIST_OFF
Connected | 1 | Long push | BSP_EVENT_DISCONNECT
Not Connected | 1 | Release | BSP_EVENT_SLEEP

The application is responsible for interpreting and implementing the event actions. The first two events will wake the device from sleep mode. These actions can therefore not be handled by the application's event handler. Instead, they are indicated to the application through the bsp_btn_ble_init function.

Note
  The bsp_btn_ble_init function should be called as early as possible during device initialization to catch wakeup button presses.

When the device is not in a connection, the BLE Button Module assumes full control of all button actions from button 1, in addition to the long push action on all buttons. When the device is connected, the BLE Button Module controls all long push actions, and assigns the default events to the push and release actions of all button 1 so they can be utilized by the application.