Files | Typedefs | Enumerations | Functions
Button

Enables event-driven and polling access to the buttons of the SPiCboard. More...

## Files
file | button.h

## Typedefs
typedef void(* | BUTTONCALLBACK) (BUTTON, BUTTONEVENT)
| Type for button event callback functions. More...

## Enumerations
enum | BUTTON { BUTTON0, BUTTON1 }
| Identifiers for all available buttons. More...
enum | BUTTONSTATE { UNKNOWN, PRESSED, RELEASED }
| States for buttons. More...
enum | BUTTONEVENT { ONPRESS, ONRELEASE }
| Events for buttons. More...

## Functions
int8_t | sb_button_registerCallback (BUTTON btn, BUTTONEVENT eve, BUTTONCALLBACK callback)
| Register a callback function for a button event. More...
int8_t | sb_button_unregisterCallback (BUTTON btn, BUTTONEVENT eve, BUTTONCALLBACK callback)
| Unregister a callback function for a button event. More...
BUTTONSTATE | sb_button_getState (BUTTON btn)
| Query the current state of a button. More...

## Detailed Description

Enables event-driven and polling access to the buttons of the SPiCboard.

The SPiCboard is equipped with two buttons. Button 0 is debounced in hardware, whereas Button 1 needs to be debounced in software by the button module. Debouncing is transparent to the application, that can use both buttons through the provided interface without the need to care about debouncing.

The debouncing code makes use of a timer. When no callbacks are registered for Button 1, the debouncing code is disabled and all alarms registered at the timer should be canceled.

The button module uses dynamic memory management to maintain the callback queues.

## Typedef Documentation

## ◆ BUTTONCALLBACK

typedef void(* BUTTONCALLBACK) (BUTTON, BUTTONEVENT)

Type for button event callback functions.

A button callback function is called on the interrupt level whenever an event at a button occurs that the function was registered for. The callback function is passed the button id and the type of event that occurred. This way, the same callback function can be registered for different buttons and events.

## Enumeration Type Documentation

## ◆ BUTTON

enum BUTTON

Identifiers for all available buttons.

Enumerator
BUTTON0 | Button 0
BUTTON1 | Button 1

## ◆ BUTTONEVENT

enum BUTTONEVENT

Events for buttons.

Down (on press) and up (on release) events for buttons.

Enumerator
ONPRESS | Button is pressed
ONRELEASE | Button is released

## ◆ BUTTONSTATE

enum BUTTONSTATE

States for buttons.

Pressed and released states for buttons.

Enumerator
UNKNOWN | Buttonstate is unknown (invalid button?)
PRESSED | Button is pressed
RELEASED | Button is released

## Function Documentation

## ◆ sb_button_getState()

BUTTONSTATE sb_button_getState | ( | BUTTON | btn | ) |

Query the current state of a button.

Parameters

  btn | id of the button

Returns
  the buttons current state (pressed or released - or unknown if invalid button) as a BUTTONSTATE

## ◆ sb_button_registerCallback()

int8_t sb_button_registerCallback | ( | BUTTON | btn,
|  | BUTTONEVENT | eve,
|  | BUTTONCALLBACK | callback
| ) |  |

Register a callback function for a button event.

Interrupts must be enabled to receive the callbacks.

Parameters

  btn | the id of the button
  eve | the type of event that the callback function should be invoked for.
  callback | pointer to the callback function. This function is called from the interrupt handler.

Return values

  0 | success,
  !0 | error

See also
  sb_button_unregisterCallback

## ◆ sb_button_unregisterCallback()

int8_t sb_button_unregisterCallback | ( | BUTTON | btn,
|  | BUTTONEVENT | eve,
|  | BUTTONCALLBACK | callback
| ) |  |

Unregister a callback function for a button event.

Parameters

  btn | the id of the button
  eve | the type of event that the callback function should be invoked for.
  callback | pointer to the callback function

Returns
  0 on success, negative value on error

Return values

  0 | success
  -1 | the callback function was not registered with the given button/event combination

See also
  sb_button_registerCallback