oveRTOS C++ API
C++20 RAII wrappers for the oveRTOS C API
Loading...
Searching...
No Matches
bsp.hpp
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
14#pragma once
15
16#include <ove/bsp.h>
17#include <ove/types.hpp>
18#include <ove/error.hpp>
19
20#ifdef CONFIG_OVE_BSP
21
22namespace ove::bsp
23{
24
38[[nodiscard]] inline Result<void> board_init() noexcept
39{
40 return from_rc(ove_bsp_board_init());
41}
42
48inline void led_set(unsigned int led, int on)
49{
50 ove_bsp_led_set(led, on);
51}
52
57inline void led_toggle(unsigned int led)
58{
59 ove_bsp_led_toggle(led);
60}
61
70[[nodiscard]] inline Result<void> gpio_set(unsigned int port, unsigned int pin, int value) noexcept
71{
72 return from_rc(ove_bsp_gpio_set(port, pin, value));
73}
74
82[[nodiscard]] inline Result<int> gpio_get(unsigned int port, unsigned int pin) noexcept
83{
84 const int rc = ove_bsp_gpio_get(port, pin);
85 if (rc >= 0)
86 return rc;
87 return std::unexpected{static_cast<Error>(rc)};
88}
89
100[[nodiscard]] inline Result<void> gpio_irq_register(unsigned int port, unsigned int pin,
101 ove_gpio_irq_mode_t mode,
102 ove_gpio_irq_cb callback,
103 void *user_data) noexcept
104{
105 return from_rc(ove_bsp_gpio_irq_register(port, pin, mode, callback, user_data));
106}
107
115[[nodiscard]] inline Result<void> gpio_irq_enable(unsigned int port, unsigned int pin) noexcept
116{
117 return from_rc(ove_bsp_gpio_irq_enable(port, pin));
118}
119
127[[nodiscard]] inline Result<void> gpio_irq_disable(unsigned int port, unsigned int pin) noexcept
128{
129 return from_rc(ove_bsp_gpio_irq_disable(port, pin));
130}
131
132} /* namespace ove::bsp */
133
134#endif /* CONFIG_OVE_BSP */
Strong ove::Error type, Result<T> alias, and std::error_code interop for the oveRTOS C++ binding.
Backward-compatibility wrappers delegating to board, gpio, and led.
Definition bsp.hpp:23
Result< void > gpio_irq_enable(unsigned int port, unsigned int pin) noexcept
Enables a GPIO interrupt (backward-compatibility alias for gpio::irq_enable).
Definition bsp.hpp:115
void led_toggle(unsigned int led)
Toggles a LED (backward-compatibility alias for led::toggle).
Definition bsp.hpp:57
Result< void > gpio_irq_register(unsigned int port, unsigned int pin, ove_gpio_irq_mode_t mode, ove_gpio_irq_cb callback, void *user_data) noexcept
Registers a GPIO interrupt callback (backward-compatibility alias for gpio::irq_register).
Definition bsp.hpp:100
Result< void > board_init() noexcept
Initialises the board hardware (backward-compatibility alias for board::init).
Definition bsp.hpp:38
Result< int > gpio_get(unsigned int port, unsigned int pin) noexcept
Reads a GPIO pin level (backward-compatibility alias for gpio::get).
Definition bsp.hpp:82
Result< void > gpio_irq_disable(unsigned int port, unsigned int pin) noexcept
Disables a GPIO interrupt (backward-compatibility alias for gpio::irq_disable).
Definition bsp.hpp:127
void led_set(unsigned int led, int on)
Turns a LED on or off (backward-compatibility alias for led::set).
Definition bsp.hpp:48
Result< void > gpio_set(unsigned int port, unsigned int pin, int value) noexcept
Drives a GPIO output pin (backward-compatibility alias for gpio::set).
Definition bsp.hpp:70
Result< void > from_rc(int rc) noexcept
Lifts a substrate rc-code into a Result<void>.
Definition error.hpp:254
Error
Strong-typed mirror of substrate OVE_ERR_* codes.
Definition error.hpp:64
std::expected< T, Error > Result
std::expected-based result alias.
Definition error.hpp:139
Common type definitions and concepts for the C++ wrapper layer.