oveRTOS C API
Embedded RTOS framework — build system, configuration, and portable C API
Loading...
Searching...
No Matches
gpio.h
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
25#include "ove/types.h"
26#include "ove_config.h"
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
40
49
60typedef void (*ove_gpio_irq_cb)(unsigned int port, unsigned int pin,
61 void *user_data);
62
63#ifdef CONFIG_OVE_GPIO
64
73int ove_gpio_configure(unsigned int port, unsigned int pin,
74 ove_gpio_mode_t mode);
75
87int ove_gpio_set(unsigned int port, unsigned int pin, int value);
88
96int ove_gpio_get(unsigned int port, unsigned int pin);
97
111int ove_gpio_irq_register(unsigned int port, unsigned int pin,
113 ove_gpio_irq_cb callback,
114 void *user_data);
115
123int ove_gpio_irq_enable(unsigned int port, unsigned int pin);
124
135int ove_gpio_irq_disable(unsigned int port, unsigned int pin);
136
137#else /* !CONFIG_OVE_GPIO */
138
139static inline int ove_gpio_configure(unsigned int port, unsigned int pin, ove_gpio_mode_t mode) { (void)port; (void)pin; (void)mode; return OVE_ERR_NOT_SUPPORTED; }
140static inline int ove_gpio_set(unsigned int port, unsigned int pin, int value) { (void)port; (void)pin; (void)value; return OVE_ERR_NOT_SUPPORTED; }
141static inline int ove_gpio_get(unsigned int port, unsigned int pin) { (void)port; (void)pin; return OVE_ERR_NOT_SUPPORTED; }
142static inline 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) { (void)port; (void)pin; (void)mode; (void)callback; (void)user_data; return OVE_ERR_NOT_SUPPORTED; }
143static inline int ove_gpio_irq_enable(unsigned int port, unsigned int pin) { (void)port; (void)pin; return OVE_ERR_NOT_SUPPORTED; }
144static inline int ove_gpio_irq_disable(unsigned int port, unsigned int pin) { (void)port; (void)pin; return OVE_ERR_NOT_SUPPORTED; }
145
146#endif /* CONFIG_OVE_GPIO */
147
148#ifdef __cplusplus
149}
150#endif
151
154#endif /* OVE_GPIO_H */
ove_gpio_irq_mode_t
GPIO interrupt trigger edge selection (re-exported for BSP-only callers).
Definition bsp.h:48
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:60
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:35
ove_gpio_irq_mode_t
GPIO interrupt trigger edge selection.
Definition gpio.h:44
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:38
@ OVE_GPIO_MODE_INPUT
Definition gpio.h:36
@ OVE_GPIO_MODE_OUTPUT_PP
Definition gpio.h:37
@ OVE_GPIO_IRQ_RISING
Definition gpio.h:45
@ OVE_GPIO_IRQ_FALLING
Definition gpio.h:46
@ OVE_GPIO_IRQ_BOTH
Definition gpio.h:47
#define OVE_ERR_NOT_SUPPORTED
The requested feature is not supported by the active backend.
Definition types.h:38