Button API

Description

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

Simple Button Driver
Simple Button Driver.
 

Data Structures

struct  sl_button_t
 

Functions

sl_status_t sl_button_init (const sl_button_t *handle)
 Button driver init.
 
sl_button_state_t 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 BUTTON_ERROR   0xFFFF
 

Typedefs

typedef uint8_t sl_button_mode_t
 
typedef uint8_t sl_button_state_t
 

Function Documentation

◆ sl_button_init()

sl_status_t sl_button_init ( const sl_button_t handle)

Button driver init.

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.

Parameters
[in]handlePointer to button instance
Returns
Status Code:
  • SL_STATUS_OK

◆ sl_button_get_state()

sl_button_state_t sl_button_get_state ( const sl_button_t handle)

Get button state.

Parameters
[in]handlePointer to button instance
Returns
Button state Current state of the button

◆ sl_button_enable()

void sl_button_enable ( const sl_button_t handle)

Enable the button.

Parameters
[in]handlePointer to button instance

◆ sl_button_disable()

void sl_button_disable ( const sl_button_t handle)

Disable the button.

Parameters
[in]handlePointer to button instance

◆ sl_button_poll_step()

void sl_button_poll_step ( const sl_button_t handle)

Poll the button.

Parameters
[in]handlePointer to button instance

◆ 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.

@appusage 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
Parameters
[out]handlePointer to button instance