Button API#

Generic Button API.


Introduction#

The button driver is a platfom level software module that manages the initialization and reading of various types of buttons. There is currently one type of button supported by the button driver:

All button functions are called through the generic driver, which then references functions in the simple button and other potential future button drivers.


Configuration#

All button instances are configured with an sl_button_t struct and a type specific context struct. These structs are automatically generated after a button is set up using Simplicity Studio's wizard, along with a function definition for initializing all LEDs of that type. Specific setup for the simple button is in the following section.


Usage#

Once the button structs are defined, the common button functions can be called being passed an instance of sl_button_t, which will be redirected to calling the type specific version of that function. The common functions include the following:

sl_button_init must be called before attempting to read the state of the button.

The button driver can either be used with interrupt mode, polling or polling with debounce. In the case of using interrupt mode, sl_button_on_change can be implemented by the application if required. This function can contain functionality to be executed in response to button event or callbacks to appropriate functionality. In the case of polling and polling with debounce mode, sl_button_poll_step is used to update the state, and needs to be called from a tick function or similar by the user. These mode can be configured per button instance in the instance specific config file.

Both the interrupt and polling methods obtain the button state for the user by calling sl_button_get_state.

Modules#

sl_button

Simple Button Driver

Typedefs#

typedef uint8_t

BUTTON mode.

typedef uint8_t

BUTTON state.

Functions#

sl_status_t
sl_button_init(const sl_button_t *handle)

Button driver init.

sl_button_get_state(const sl_button_t *handle)

Get button state.

void
sl_button_enable(const sl_button_t *handle)

Enable the button.

void
sl_button_disable(const sl_button_t *handle)

Disable the button.

void
sl_button_poll_step(const sl_button_t *handle)

Poll the button.

void
sl_button_on_change(const sl_button_t *handle)

A callback called in interrupt context whenever a button changes its state.

Macros#

#define

Error when trying to return state.

Typedef Documentation#

sl_button_mode_t#

typedef uint8_t sl_button_mode_t

BUTTON mode.


Definition at line 61 of file platform/driver/button/inc/sl_button.h

sl_button_state_t#

typedef uint8_t sl_button_state_t

BUTTON state.


Definition at line 62 of file platform/driver/button/inc/sl_button.h

Function Documentation#

sl_button_init#

sl_status_t sl_button_init (const sl_button_t * handle)

Button driver init.

Parameters
[in]handle

Pointer to button instance

This function should be called before calling any other button function. Sets up the GPIO. Sets the mode of operation. Sets up the interrupts based on the mode of operation.

Returns

  • Status Code:

    • SL_STATUS_OK


Definition at line 89 of file platform/driver/button/inc/sl_button.h

sl_button_get_state#

sl_button_state_t sl_button_get_state (const sl_button_t * handle)

Get button state.

Parameters
[in]handle

Pointer to button instance

Returns

  • Button state Current state of the button


Definition at line 98 of file platform/driver/button/inc/sl_button.h

sl_button_enable#

void sl_button_enable (const sl_button_t * handle)

Enable the button.

Parameters
[in]handle

Pointer to button instance


Definition at line 106 of file platform/driver/button/inc/sl_button.h

sl_button_disable#

void sl_button_disable (const sl_button_t * handle)

Disable the button.

Parameters
[in]handle

Pointer to button instance


Definition at line 114 of file platform/driver/button/inc/sl_button.h

sl_button_poll_step#

void sl_button_poll_step (const sl_button_t * handle)

Poll the button.

Parameters
[in]handle

Pointer to button instance


Definition at line 121 of file platform/driver/button/inc/sl_button.h

sl_button_on_change#

void sl_button_on_change (const sl_button_t * handle)

A callback called in interrupt context whenever a button changes its state.

Parameters
[out]handle

Pointer to button instance

Remarks

  • Can be implemented by the application if required. This function can contain the functionality to be executed in response to changes of state in each of the buttons, or callbacks to appropriate functionality.

Note

  • The button state should not be updated in this function, it is updated by specific button driver prior to arriving here


Definition at line 135 of file platform/driver/button/inc/sl_button.h

Macro Definition Documentation#

BUTTON_ERROR#

#define BUTTON_ERROR
Value:
0xFFFF

Error when trying to return state.


Definition at line 55 of file platform/driver/button/inc/sl_button.h