Wirepas SDK
gpio.h
Go to the documentation of this file.
1 /* Copyright 2022 Wirepas Ltd. All Rights Reserved.
2  *
3  * See file LICENSE.txt for full license details.
4  *
5  */
6 
12 #ifndef GPIO_H_
13 #define GPIO_H_
14 
15 #include <stdint.h>
16 
18 typedef uint8_t gpio_id_t;
19 
21 typedef uint8_t gpio_port_t;
22 
24 typedef uint8_t gpio_pin_t;
25 
27 typedef enum
28 {
43 } gpio_res_e;
44 
46 typedef enum
47 {
52 } gpio_level_e;
53 
58 typedef enum
59 {
69 
74 typedef enum
75 {
83 
88 typedef enum
89 {
97 
99 #define IS_RISING_EDGE(event) ((event & GPIO_IN_EVENT_RISING_EDGE) == GPIO_IN_EVENT_RISING_EDGE)
100 
101 #define IS_FALLING_EDGE(event) ((event & GPIO_IN_EVENT_FALLING_EDGE) == GPIO_IN_EVENT_FALLING_EDGE)
102 
110 typedef void (*gpio_in_event_cb_f)(gpio_id_t id, gpio_in_event_e event);
111 
113 typedef struct
114 {
125 } gpio_in_cfg_t;
126 
128 typedef struct
129 {
135 
154 gpio_res_e Gpio_init(void);
155 
165 
176 
186 
197 
206 
217 
230 
235 uint8_t Gpio_getNumber(void);
236 
237 #endif /* GPIO_H_ */
gpio_in_mode_cfg_e
gpio_in_mode_cfg_e
GPIO pull configuration.
Definition: gpio.h:58
GPIO_IN_EVENT_FALLING_EDGE
@ GPIO_IN_EVENT_FALLING_EDGE
Definition: gpio.h:95
Gpio_inputSetCfg
gpio_res_e Gpio_inputSetCfg(gpio_id_t id, const gpio_in_cfg_t *in_cfg)
Configure a GPIO as an input GPIO.
GPIO_RES_INVALID_PARAM
@ GPIO_RES_INVALID_PARAM
Definition: gpio.h:36
gpio_out_cfg_t::level_default
gpio_level_e level_default
Definition: gpio.h:133
gpio_in_cfg_t::event_cfg
gpio_in_event_e event_cfg
Definition: gpio.h:122
GPIO_RES_INVALID_DIRECTION
@ GPIO_RES_INVALID_DIRECTION
Definition: gpio.h:40
Gpio_init
gpio_res_e Gpio_init(void)
Initialize GPIO module.
gpio_pin_t
uint8_t gpio_pin_t
GPIO pin number.
Definition: gpio.h:24
GPIO_IN_PULL_NONE
@ GPIO_IN_PULL_NONE
Definition: gpio.h:63
Gpio_inputRead
gpio_res_e Gpio_inputRead(gpio_id_t id, gpio_level_e *level)
Read the GPIO input level.
gpio_port_t
uint8_t gpio_port_t
GPIO port number.
Definition: gpio.h:21
gpio_in_cfg_t::event_cb
gpio_in_event_cb_f event_cb
Definition: gpio.h:116
GPIO_RES_NOT_IMPLEMENTED
@ GPIO_RES_NOT_IMPLEMENTED
Definition: gpio.h:34
GPIO_RES_INVALID_PIN
@ GPIO_RES_INVALID_PIN
Definition: gpio.h:38
GPIO_IN_PULL_DOWN
@ GPIO_IN_PULL_DOWN
Definition: gpio.h:65
GPIO_RES_NO_FREE_IT
@ GPIO_RES_NO_FREE_IT
Definition: gpio.h:42
gpio_id_t
uint8_t gpio_id_t
GPIO identification number.
Definition: gpio.h:18
GPIO_LEVEL_HIGH
@ GPIO_LEVEL_HIGH
Definition: gpio.h:51
GPIO_RES_OK
@ GPIO_RES_OK
Definition: gpio.h:30
gpio_in_event_e
gpio_in_event_e
GPIO event.
Definition: gpio.h:88
GPIO_OUT_MODE_PUSH_PULL
@ GPIO_OUT_MODE_PUSH_PULL
Definition: gpio.h:77
GPIO_IN_EVENT_RISING_EDGE
@ GPIO_IN_EVENT_RISING_EDGE
Definition: gpio.h:93
Gpio_getPin
gpio_res_e Gpio_getPin(gpio_id_t id, gpio_port_t *port, gpio_pin_t *pin)
Get the GPIO port and pin numbers of the given GPIO id.
gpio_out_mode_cfg_e
gpio_out_mode_cfg_e
GPIO operating mode configuration.
Definition: gpio.h:74
gpio_in_cfg_t
GPIO input configuration.
Definition: gpio.h:113
GPIO_IN_DISABLED
@ GPIO_IN_DISABLED
Definition: gpio.h:61
gpio_out_cfg_t::out_mode_cfg
gpio_out_mode_cfg_e out_mode_cfg
Definition: gpio.h:131
Gpio_outputToggle
gpio_res_e Gpio_outputToggle(gpio_id_t id)
Toggle GPIO output level.
gpio_out_cfg_t
GPIO output configuration.
Definition: gpio.h:128
Gpio_outputSetCfg
gpio_res_e Gpio_outputSetCfg(gpio_id_t id, const gpio_out_cfg_t *out_cfg)
Configure a GPIO as an output GPIO.
GPIO_OUT_MODE_OPEN_DRAIN_WITH_PULL_UP
@ GPIO_OUT_MODE_OPEN_DRAIN_WITH_PULL_UP
Definition: gpio.h:81
Gpio_outputWrite
gpio_res_e Gpio_outputWrite(gpio_id_t id, gpio_level_e level)
Write GPIO output level.
GPIO_LEVEL_LOW
@ GPIO_LEVEL_LOW
Definition: gpio.h:49
gpio_level_e
gpio_level_e
GPIO logical level.
Definition: gpio.h:46
GPIO_IN_PULL_UP
@ GPIO_IN_PULL_UP
Definition: gpio.h:67
GPIO_RES_UNINITIALIZED
@ GPIO_RES_UNINITIALIZED
Definition: gpio.h:32
gpio_res_e
gpio_res_e
List of return code.
Definition: gpio.h:27
GPIO_IN_EVENT_NONE
@ GPIO_IN_EVENT_NONE
Definition: gpio.h:91
GPIO_OUT_MODE_OPEN_DRAIN
@ GPIO_OUT_MODE_OPEN_DRAIN
Definition: gpio.h:79
gpio_in_event_cb_f
void(* gpio_in_event_cb_f)(gpio_id_t id, gpio_in_event_e event)
Callback structure for a GPIO event.
Definition: gpio.h:110
Gpio_getNumber
uint8_t Gpio_getNumber(void)
Get the number of GPIOs.
gpio_in_cfg_t::in_mode_cfg
gpio_in_mode_cfg_e in_mode_cfg
Definition: gpio.h:124
Gpio_outputRead
gpio_res_e Gpio_outputRead(gpio_id_t id, gpio_level_e *level)
Read the GPIO output level.