Button Handler

nRF5 SDK v12.1.0

Buttons handling module. More...

Data Structures

struct app_button_cfg_t
Button configuration structure. More...
struct pin_transition_t
Pin transition direction struct. More...

Typedefs

typedef void(* app_button_handler_t )(uint8_t pin_no, uint8_t button_action)
Button event handler type.

Functions

uint32_t app_button_init ( app_button_cfg_t const *p_buttons, uint8_t button_count, uint32_t detection_delay)
Function for initializing the Buttons. More...
uint32_t app_button_enable (void)
Function for enabling button detection. More...
uint32_t app_button_disable (void)
Function for disabling button detection. More...
uint32_t app_button_is_pushed (uint8_t button_id, bool *p_is_pushed)
Function for checking if a button is currently being pushed. More...

Detailed Description

Buttons handling module.

The button handler uses the GPIOTE Handler to detect that a button has been pushed. To handle debouncing, it will start a timer in the GPIOTE event handler. The button will only be reported as pushed if the corresponding pin is still active when the timer expires. If there is a new GPIOTE event while the timer is running, the timer is restarted.

Note
The app_button module uses the app_timer module. The user must ensure that the queue in app_timer is large enough to hold the app_timer_stop() / app_timer_start() operations which will be executed on each event from GPIOTE module (2 operations), as well as other app_timer operations queued simultaneously in the application.
Even if the scheduler is not used, app_button.h will include app_scheduler.h, so when compiling, app_scheduler.h must be available in one of the compiler include paths.

Macro Definition Documentation

#define APP_BUTTON_ACTIVE_HIGH   1

Indicates that a button is active high.

#define APP_BUTTON_ACTIVE_LOW   0

Indicates that a button is active low.

#define APP_BUTTON_PUSH   1

Indicates that a button is pushed.

#define APP_BUTTON_RELEASE   0

Indicates that a button is released.

Function Documentation

uint32_t app_button_disable ( void )

Function for disabling button detection.

Return values
NRF_SUCCESS Button detection successfully disabled. Error code otherwise.
uint32_t app_button_enable ( void )

Function for enabling button detection.

Return values
NRF_SUCCESS Module successfully enabled.
uint32_t app_button_init ( app_button_cfg_t const * p_buttons ,
uint8_t button_count ,
uint32_t detection_delay
)

Function for initializing the Buttons.

This function will initialize the specified pins as buttons, and configure the Button Handler module as a GPIOTE user (but it will not enable button detection).

Note
Normally initialization should be done using the APP_BUTTON_INIT() macro
app_button_enable() function must be called in order to enable the button detection.
Parameters
[in] p_buttons Array of buttons to be used (NOTE: Must be static!).
[in] button_count Number of buttons.
[in] detection_delay Delay from a GPIOTE event until a button is reported as pushed.
Returns
NRF_SUCCESS on success, otherwise an error code.
uint32_t app_button_is_pushed ( uint8_t button_id ,
bool * p_is_pushed
)

Function for checking if a button is currently being pushed.

Parameters
[in] button_id Button index (in the app_button_cfg_t array given to app_button_init) to be checked.
[out] p_is_pushed Button state.
Return values
NRF_SUCCESS State successfully read.
NRF_ERROR_INVALID_PARAM Invalid button index.