oveRTOS C API
Embedded RTOS framework — build system, configuration, and portable C API
Loading...
Searching...
No Matches
gpio.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2026 Kamil Lulko <kamil.lulko@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 *
6 * This file is part of oveRTOS.
7 */
8
9#ifndef OVE_GPIO_H
10#define OVE_GPIO_H
11
26#include "ove/types.h"
27#include "ove_config.h"
28
29#ifdef __cplusplus
30extern "C" {
31#endif
32
41
50
61typedef void (*ove_gpio_irq_cb)(unsigned int port, unsigned int pin, void *user_data);
62
63#ifdef CONFIG_OVE_GPIO
64
73int ove_gpio_configure(unsigned int port, unsigned int pin, ove_gpio_mode_t mode);
74
86int ove_gpio_set(unsigned int port, unsigned int pin, int value);
87
95int ove_gpio_get(unsigned int port, unsigned int pin);
96
110int ove_gpio_irq_register(unsigned int port, unsigned int pin, ove_gpio_irq_mode_t mode,
111 ove_gpio_irq_cb callback, void *user_data);
112
120int ove_gpio_irq_enable(unsigned int port, unsigned int pin);
121
132int ove_gpio_irq_disable(unsigned int port, unsigned int pin);
133
145int ove_gpio_irq_unregister(unsigned int port, unsigned int pin);
146
147#else /* !CONFIG_OVE_GPIO */
148
149static inline int ove_gpio_configure(unsigned int port, unsigned int pin, ove_gpio_mode_t mode)
150{
151 (void)port;
152 (void)pin;
153 (void)mode;
155}
156static inline int ove_gpio_set(unsigned int port, unsigned int pin, int value)
157{
158 (void)port;
159 (void)pin;
160 (void)value;
162}
163static inline int ove_gpio_get(unsigned int port, unsigned int pin)
164{
165 (void)port;
166 (void)pin;
168}
169static inline int ove_gpio_irq_register(unsigned int port, unsigned int pin,
171 void *user_data)
172{
173 (void)port;
174 (void)pin;
175 (void)mode;
176 (void)callback;
177 (void)user_data;
179}
180static inline int ove_gpio_irq_enable(unsigned int port, unsigned int pin)
181{
182 (void)port;
183 (void)pin;
185}
186static inline int ove_gpio_irq_disable(unsigned int port, unsigned int pin)
187{
188 (void)port;
189 (void)pin;
191}
192
193#endif /* CONFIG_OVE_GPIO */
194
195#ifdef __cplusplus
196}
197#endif
198
201#endif /* OVE_GPIO_H */
ove_gpio_irq_mode_t
GPIO interrupt trigger edge selection (re-exported for BSP-only callers).
Definition bsp.h:49
int ove_gpio_configure(unsigned int port, unsigned int pin, ove_gpio_mode_t mode)
Configure the direction and drive mode of a GPIO pin.
int ove_gpio_irq_disable(unsigned int port, unsigned int pin)
Disable a previously enabled GPIO interrupt without unregistering it.
int ove_gpio_irq_register(unsigned int port, unsigned int pin, ove_gpio_irq_mode_t mode, ove_gpio_irq_cb callback, void *user_data)
Register an interrupt callback for a GPIO pin.
int ove_gpio_irq_enable(unsigned int port, unsigned int pin)
Enable a previously registered GPIO interrupt.
void(* ove_gpio_irq_cb)(unsigned int port, unsigned int pin, void *user_data)
GPIO interrupt callback type.
Definition gpio.h:61
int ove_gpio_irq_unregister(unsigned int port, unsigned int pin)
Unregister a GPIO interrupt, freeing its slot.
int ove_gpio_set(unsigned int port, unsigned int pin, int value)
Set the output level of a GPIO pin.
ove_gpio_mode_t
GPIO pin direction and drive mode.
Definition gpio.h:36
ove_gpio_irq_mode_t
GPIO interrupt trigger edge selection.
Definition gpio.h:45
int ove_gpio_get(unsigned int port, unsigned int pin)
Read the current logical level of a GPIO pin.
@ OVE_GPIO_MODE_OUTPUT_OD
Definition gpio.h:39
@ OVE_GPIO_MODE_INPUT
Definition gpio.h:37
@ OVE_GPIO_MODE_OUTPUT_PP
Definition gpio.h:38
@ OVE_GPIO_IRQ_RISING
Definition gpio.h:46
@ OVE_GPIO_IRQ_FALLING
Definition gpio.h:47
@ OVE_GPIO_IRQ_BOTH
Definition gpio.h:48
@ OVE_ERR_NOT_SUPPORTED
Definition types.h:98