LwBTN

group LWBTN

Lightweight button manager.

Defines

lwbtn_init(btns, btns_cnt, get_state_fn, evt_fn)

Initialize LwBTN library with buttons on default button group.

See also

lwbtn_init_ex

Parameters
  • btns[in] Array of buttons to process

  • btns_cnt[in] Number of buttons to process

  • get_state_fn[in] Pointer to function providing button state on demand

  • evt_fn[in] Button event function callback

lwbtn_process(mstime)

Periodically read button states and take appropriate actions.

See also

lwbtn_process_ex

Parameters
  • mstime[in] Current system time in milliseconds

Typedefs

typedef void (*lwbtn_evt_fn)(struct lwbtn *lw, struct lwbtn_btn *btn, lwbtn_evt_t evt)

Button event function callback prototype.

Param lw

[in] LwBTN instance

Param btn

[in] Button instance from array for which event occured

Param evt

[in] Event type

typedef uint8_t (*lwbtn_get_state_fn)(struct lwbtn *lw, struct lwbtn_btn *btn)

Get button/input state callback function.

Param lw

[in] LwBTN instance

Param btn

[in] Button instance from array to read state

Return

1 when button is considered active, 0 otherwise

Enums

enum lwbtn_evt_t

List of button events.

Values:

enumerator LWBTN_EVT_ONPRESS = 0x00

On press event - sent when valid press is detected (after debounce if enabled)

enumerator LWBTN_EVT_ONRELEASE

On release event - sent when valid release event is detected (from active to inactive)

enumerator LWBTN_EVT_ONCLICK

On Click event - sent when valid sequence of on-press and on-release events occurs

enumerator LWBTN_EVT_KEEPALIVE

Keep alive event - sent periodically when button is active

Functions

uint8_t lwbtn_init_ex(lwbtn_t *lw, lwbtn_btn_t *btns, uint16_t btns_cnt, lwbtn_get_state_fn get_state_fn, lwbtn_evt_fn evt_fn)

Initialize button manager.

Parameters
  • lw[in] LwBTN instance. Set to NULL to use default one

  • btns[in] Array of buttons to process

  • btns_cnt[in] Number of buttons to process

  • get_state_fn[in] Pointer to function providing button state on demand

  • evt_fn[in] Button event function callback

Returns

1 on success, 0 otherwise

uint8_t lwbtn_process_ex(lwbtn_t *lw, uint32_t mstime)

Button processing function, that reads the inputs and makes actions accordingly.

Parameters

mstime[in] Current time in milliseconds

Returns

1 on success, 0 otherwise

struct lwbtn_argdata_port_pin_state_t
#include <lwbtn.h>

Custom user argument data structure.

This is a simple pre-defined structure, that can be used by user to define most commonly required feature in embedded systems, that being GPIO port, GPIO pin and state when button is considered active.

User can later attach this structure as argument to button structure

Public Members

void *port

User defined GPIO port information

void *pin

User defined GPIO pin information

uint8_t state

User defined GPIO state level when considered active

struct lwbtn_btn_t
#include <lwbtn.h>

Button/input structure.

Public Members

uint16_t flags

Private button flags management

uint8_t old_state

Old button state - 1 means active, 0 means inactive

uint32_t time_change

Time in ms when button state got changed last time

uint32_t last_time

Time in ms of last send keep alive event

Time in ms of last successfully detected (not sent!) click event

uint16_t cnt

Number of keep alive events sent after successful on-press detection. Value is reset after on-release

struct lwbtn_btn_t::[anonymous] keepalive

Keep alive structure

uint8_t cnt

Number of consecutive clicks detected, respecting maximum timeout between clicks

struct lwbtn_btn_t::[anonymous] click

Click event structure

void *arg

User defined custom argument for callback function purpose

struct lwbtn_t
#include <lwbtn.h>

LwBTN group structure.

Public Members

lwbtn_btn_t *btns

Pointer to buttons array

uint16_t btns_cnt

Number of buttons in array

lwbtn_evt_fn evt_fn

Pointer to event function

lwbtn_get_state_fn get_state_fn

Pointer to get state function