oveRTOS C++ API
C++20 RAII wrappers for the oveRTOS C API
Loading...
Searching...
No Matches
ove.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
63#pragma once
64
65#include <ove/types.hpp>
66#include <ove/error.hpp>
67#include <ove/sync.hpp>
68#include <ove/eventgroup.hpp>
69#include <ove/queue.hpp>
70#include <ove/timer.hpp>
71#include <ove/thread.hpp>
72#include <ove/console.hpp>
73#include <ove/time.hpp>
74#include <ove/nvs.hpp>
75#include <ove/shell.hpp>
76#include <ove/board.hpp>
77#include <ove/gpio.hpp>
78#include <ove/led.hpp>
79#include <ove/bsp.hpp>
80#include <ove/audio.hpp>
81#include <ove/watchdog.hpp>
82#include <ove/fs.hpp>
83#include <ove/stream.hpp>
84#include <ove/workqueue.hpp>
85#include <ove/app.hpp>
86#include <ove/net.hpp>
87#include <ove/net_tls.hpp>
88#include <ove/net_http.hpp>
89#include <ove/net_mqtt.hpp>
90#include <ove/net_httpd.hpp>
91#include <ove/pm.hpp>
92
93/* Zephyr's <zephyr/kernel_structs.h> defines `_current` and `_kernel`
94 * as global object-like macros (`#define _current _kernel.cpus[0].current`).
95 * Both leak into every TU that pulls in any Zephyr header (i.e. anything
96 * including ove.hpp on Zephyr). Third-party C++ libraries — notably
97 * ETL's <etl/ranges.h>, used by lvgl_gallery_cpp — declare members
98 * named `_current`, which the preprocessor then mangles into
99 * `_kernel.cpus[0].current` before C++ parses, producing a torrent of
100 * "expected unqualified-id" errors.
101 *
102 * Undef both AT THE END of the umbrella header. oveRTOS's C++ bindings
103 * never call into raw Zephyr scheduler internals from app code; the
104 * affected macros are only used inside Zephyr's own static-inline
105 * accessors, which have already been parsed by this point. */
106#ifdef __ZEPHYR__
107#undef _current
108#undef _kernel
109#endif
Application entry point macro and scheduler start.
Audio graph engine C++ wrappers.
Board initialisation and identification functions.
Legacy BSP compatibility shim.
Console serial I/O functions.
Strong ove::Error type, Result<T> alias, and std::error_code interop for the oveRTOS C++ binding.
Multi-bit event group with RAII lifecycle.
RAII file and directory handles with VFS operations.
GPIO pin configuration and control functions.
On-board LED control functions.
RAII networking: sockets, network interface, DNS.
RAII C++ wrappers for the oveRTOS HTTP client API.
C++ wrappers for the oveRTOS embedded HTTP server API.
RAII C++ wrappers for the oveRTOS MQTT client API.
RAII wrapper for TLS/SSL sessions (mbedTLS)
Non-volatile key-value storage functions.
Power management framework — state machine, wake sources, peripheral domains, and runtime statistics.
Type-safe, fixed-depth message queue with RAII lifecycle.
Interactive shell command registration.
Byte-stream ring buffer with RAII lifecycle.
RAII wrappers for mutexes, semaphores, events, condition variables, and lock guards.
Compile-time stack-sized thread with move semantics.
Monotonic clock queries and delay utilities.
Software timer with RAII lifecycle.
Common type definitions and concepts for the C++ wrapper layer.
Hardware watchdog timer with RAII lifecycle.
Deferred work queue and work items with RAII lifecycle.