4#ifndef TETL_FREERTOS_QUEUE_HPP
5#define TETL_FREERTOS_QUEUE_HPP
7#include <etl/version.hpp>
9#include <etl/cstdint.hpp>
10#include <etl/utility.hpp>
12#if defined(TETL_FREERTOS_USE_STUBS)
13 #include <etl/experimental/freertos/stubs.hpp>
24template <
typename T,
etl::uint32_t Size>
27 using size_type =
etl::uint32_t;
51 [[
nodiscard]]
auto send(T
const& data, TickType_t ticksToWait = 0)
const ->
bool;
54 auto receive(T& data, TickType_t ticksToWait = 0)
const ->
bool;
63 QueueHandle_t _handle =
nullptr;
66template <
typename T,
etl::uint32_t Size>
72template <
typename T,
etl::uint32_t Size>
75 if (_handle !=
nullptr) {
80template <
typename T,
etl::uint32_t Size>
86template <
typename T,
etl::uint32_t Size>
87inline auto queue<T, Size>::
send(T
const& data, TickType_t ticksToWait)
const ->
bool
89 auto const*
const rawData =
static_cast<
void const*>(&data);
91 return static_cast<
bool>(success);
94template <
typename T,
etl::uint32_t Size>
95inline auto queue<T, Size>::
receive(T& data, TickType_t ticksToWait)
const ->
bool
97 auto*
const rawData =
static_cast<
void*>(&data);
99 return static_cast<
bool>(success);
102template <
typename T,
etl::uint32_t Size>
106 auto*
const rawData =
static_cast<
void*>(&value);
108 return {
static_cast<
bool>(success), value};
111template <
typename T,
etl::uint32_t Size>
115 return static_cast<
bool>(result);
118template <
typename T,
etl::uint32_t Size>
122 return static_cast<
etl::uint32_t>(result);
Definition adjacent_find.hpp:9
Wrapper around a FreeRTOS queue.
Definition queue.hpp:25
auto send(T const &data, TickType_t ticksToWait=0) const -> bool
Push an element on to the queue.
Definition queue.hpp:87
~queue()
Delete a queue - freeing all the memory allocated for storing of items placed on the queue.
Definition queue.hpp:73
auto receive(T &data, TickType_t ticksToWait=0) const -> bool
Pop an element of the queue.
Definition queue.hpp:95
auto receive(TickType_t ticksToWait=0) const -> pair< bool, T >
Pop an element of the queue.
Definition queue.hpp:103
queue(queue const &)=delete
auto operator=(queue const &) -> queue &=delete
auto messages_waiting() const -> etl::uint32_t
Definition queue.hpp:119
auto capacity() const -> size_type
Returns the capacity of the internal buffer.
Definition queue.hpp:81
auto operator=(queue &&) -> queue &=delete
auto reset() const -> bool
Definition queue.hpp:112
queue()
Creates a new queue. RAM is automatically allocated from the FreeRTOS heap.
Definition queue.hpp:67
etl::pair is a class template that provides a way to store two heterogeneous objects as a single unit...
Definition pair.hpp:37
auto vQueueDelete(QueueHandle_t xQueue) -> void
Definition stubs.hpp:78
auto xQueueReset(QueueHandle_t xQueue) -> BaseType_t
Definition stubs.hpp:95
auto xQueueCreate(UBaseType_t uxQueueLength, UBaseType_t uxItemSize) -> QueueHandle_t
Definition stubs.hpp:72
auto xQueueReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait) -> BaseType_t
Definition stubs.hpp:89
auto uxQueueMessagesWaiting(QueueHandle_t xQueue) -> UBaseType_t
Definition stubs.hpp:101
auto xQueueSend(QueueHandle_t xQueue, void const *pvItemToQueue, TickType_t xTicksToWait) -> BaseType_t
Definition stubs.hpp:83