16#include <ove/eventgroup.h>
20#ifdef CONFIG_OVE_EVENTGROUP
47#ifdef CONFIG_OVE_ZERO_HEAP
48 int err = ove_eventgroup_init(&handle_, &storage_);
50 int err = ove_eventgroup_create(&handle_);
52 OVE_STATIC_INIT_ASSERT(err == OVE_OK);
62#ifdef CONFIG_OVE_ZERO_HEAP
63 ove_eventgroup_deinit(handle_);
65 ove_eventgroup_destroy(handle_);
72#ifdef CONFIG_OVE_ZERO_HEAP
82 other.handle_ =
nullptr;
94 ove_eventgroup_destroy(handle_);
95 handle_ = other.handle_;
96 other.handle_ =
nullptr;
112 [[nodiscard]] ove_eventbits_t
set_bits(ove_eventbits_t bits)
114 return ove_eventgroup_set_bits(handle_, bits);
126 [[nodiscard]] ove_eventbits_t
clear_bits(ove_eventbits_t bits)
128 return ove_eventgroup_clear_bits(handle_, bits);
141 std::chrono::nanoseconds timeout)
noexcept
143 ove_eventbits_t result = 0;
144 const int rc = ove_eventgroup_wait_bits(handle_, bits, flags,
159 steady_clock::time_point deadline)
noexcept
161 ove_eventbits_t result = 0;
162 const int rc = ove_eventgroup_wait_bits_until(handle_, bits, flags,
177 return ove_eventgroup_set_bits_from_isr(handle_, bits);
186 return ove_eventgroup_get_bits(handle_);
195 return handle_ !=
nullptr;
208 ove_eventgroup_t handle_ =
nullptr;
209#ifdef CONFIG_OVE_ZERO_HEAP
210 ove_eventgroup_storage_t storage_ = {};
RAII wrapper around an oveRTOS event-group (bit-field synchronisation object).
Definition eventgroup.hpp:38
EventGroup & operator=(EventGroup &&other) noexcept
Move-assignment operator — transfers ownership of the kernel handle.
Definition eventgroup.hpp:90
ove_eventbits_t set_bits_from_isr(ove_eventbits_t bits)
Sets one or more event bits from an ISR context.
Definition eventgroup.hpp:175
Result< ove_eventbits_t > wait_bits(ove_eventbits_t bits, uint32_t flags, std::chrono::nanoseconds timeout) noexcept
Waits until the specified event bits are set, or until the timeout expires.
Definition eventgroup.hpp:140
bool valid() const
Returns true if the underlying kernel handle is non-null.
Definition eventgroup.hpp:193
EventGroup()
Constructs and initialises the event group with all bits cleared.
Definition eventgroup.hpp:45
ove_eventgroup_t handle() const
Returns the raw oveRTOS event-group handle.
Definition eventgroup.hpp:202
~EventGroup() noexcept
Destroys the event group, releasing the underlying kernel resource.
Definition eventgroup.hpp:58
ove_eventbits_t get_bits() const
Returns the current value of all event bits without blocking.
Definition eventgroup.hpp:184
Result< ove_eventbits_t > wait_bits_until(ove_eventbits_t bits, uint32_t flags, steady_clock::time_point deadline) noexcept
Deadline-based variant of wait_bits.
Definition eventgroup.hpp:158
ove_eventbits_t clear_bits(ove_eventbits_t bits)
Clears one or more event bits atomically.
Definition eventgroup.hpp:126
ove_eventbits_t set_bits(ove_eventbits_t bits)
Sets one or more event bits atomically.
Definition eventgroup.hpp:112
EventGroup(EventGroup &&other) noexcept
Move constructor — transfers ownership of the kernel handle.
Definition eventgroup.hpp:80
Strong ove::Error type, Result<T> alias, and std::error_code interop for the oveRTOS C++ binding.
Top-level namespace for all oveRTOS C++ abstractions.
Definition app.hpp:20
constexpr uint64_t to_timeout_ns(std::chrono::duration< Rep, Period > d) noexcept
Convert a chrono duration to uint64_t nanoseconds for the C API.
Definition types.hpp:129
constexpr uint64_t to_deadline_ns(steady_clock::time_point tp) noexcept
Convert an ove::steady_clock::time_point to uint64_t nanoseconds for the substrate's _until APIs.
Definition types.hpp:176
Result< void > from_rc(int rc) noexcept
Lifts a substrate rc-code into a Result<void>.
Definition error.hpp:254
std::expected< T, Error > Result
std::expected-based result alias.
Definition error.hpp:139
Common type definitions and concepts for the C++ wrapper layer.