Midnight Sun Firmware
Loading...
Searching...
No Matches
button.h
1
#pragma once
2
3
/************************************************************************************************
4
* @file button.h
5
*
6
* @brief Header file for managing an individual GPIO-connected button with debounce and edge callbacks.
7
*
8
* @date 2025-07-28
9
* @author Midnight Sun Team #24 - MSXVI
10
************************************************************************************************/
11
12
/* Standard library Headers */
13
#include <stdbool.h>
14
15
/* Inter-component Headers */
16
#include "gpio.h"
17
#include "status.h"
18
19
/* Intra-component Headers */
20
30
typedef
enum
{
31
BUTTON_IDLE
,
32
BUTTON_PRESSED
33
}
ButtonState
;
34
35
typedef
struct
Button
Button
;
36
40
typedef
struct
{
41
void (*rising_edge_cb)(
Button
*button);
42
void (*falling_edge_cb)(
Button
*button);
43
}
ButtonCallbacks
;
44
48
typedef
struct
{
49
GpioAddress
gpio
;
50
bool
active_low
;
51
uint8_t
debounce_ms
;
52
ButtonCallbacks
callbacks
;
53
}
ButtonConfig
;
54
58
typedef
struct
Button
{
59
ButtonConfig
*
config
;
60
uint8_t
last_raw
;
61
uint8_t
counter
;
62
ButtonState
state
;
63
}
Button
;
64
72
StatusCode
button_init
(
Button
*button,
ButtonConfig
*config);
73
80
StatusCode
button_update
(
Button
*button);
81
ButtonState
ButtonState
Button states representing current input.
Definition:
button.h:30
button_init
StatusCode button_init(Button *button, ButtonConfig *config)
Initialize a button instance.
Definition:
button.c:21
button_update
StatusCode button_update(Button *button)
Update the Button state based on the given GPIO state.
Definition:
button.c:42
BUTTON_IDLE
@ BUTTON_IDLE
Definition:
button.h:31
BUTTON_PRESSED
@ BUTTON_PRESSED
Definition:
button.h:32
StatusCode
StatusCode
StatusCodes for various errors.
Definition:
status.h:27
ButtonCallbacks
Button Callbacks.
Definition:
button.h:40
ButtonConfig
Button configuration structure.
Definition:
button.h:48
ButtonConfig::callbacks
ButtonCallbacks callbacks
Definition:
button.h:52
ButtonConfig::debounce_ms
uint8_t debounce_ms
Definition:
button.h:51
ButtonConfig::gpio
GpioAddress gpio
Definition:
button.h:49
ButtonConfig::active_low
bool active_low
Definition:
button.h:50
Button
Button instance structure.
Definition:
button.h:58
Button::counter
uint8_t counter
Definition:
button.h:61
Button::last_raw
uint8_t last_raw
Definition:
button.h:60
Button::state
ButtonState state
Definition:
button.h:62
Button::config
ButtonConfig * config
Definition:
button.h:59
GpioAddress
Port and pin data.
Definition:
network.h:62
projects
steering
inc
button.h
Generated by
1.9.5