3#ifndef TETL_FREERTOS_QUEUE_HPP
4#define TETL_FREERTOS_QUEUE_HPP
11#if defined(TETL_FREERTOS_USE_STUBS)
23template <
typename T, etl::u
int32_t Size>
58 [[nodiscard]] auto
reset() const ->
bool;
67 : _handle{[]() {
return xQueueCreate(Size,
sizeof(T)); }()}
71template <
typename T, etl::u
int32_t Size>
74 if (_handle !=
nullptr) {
79template <
typename T, etl::u
int32_t Size>
85template <
typename T, etl::u
int32_t Size>
88 auto const*
const rawData =
static_cast<void const*
>(&
data);
89 auto const success =
xQueueSend(_handle, rawData, ticksToWait);
90 return static_cast<bool>(success);
93template <
typename T, etl::u
int32_t Size>
96 auto*
const rawData =
static_cast<void*
>(&
data);
97 auto const success =
xQueueReceive(_handle, rawData, ticksToWait);
98 return static_cast<bool>(success);
101template <
typename T, etl::u
int32_t Size>
105 auto*
const rawData =
static_cast<void*
>(&value);
106 auto const success =
xQueueReceive(_handle, rawData, ticksToWait);
107 return {
static_cast<bool>(success), value};
110template <
typename T, etl::u
int32_t Size>
114 return static_cast<bool>(result);
117template <
typename T, etl::u
int32_t Size>
constexpr auto data(C &c) noexcept(noexcept(c.data())) -> decltype(c.data())
Returns a pointer to the block of memory containing the elements of the container.
Definition data.hpp:11
Definition adjacent_find.hpp:8
TETL_BUILTIN_UINT32 uint32_t
Unsigned integer type with width of exactly 32 bits.
Definition uint_t.hpp:17
auto send(T const &data, TickType_t ticksToWait=0) const -> bool
Push an element on to the queue.
Definition queue.hpp:86
~queue()
Delete a queue - freeing all the memory allocated for storing of items placed on the queue.
Definition queue.hpp:72
auto receive(T &data, TickType_t ticksToWait=0) const -> bool
Pop an element of the queue.
Definition queue.hpp:94
queue(queue const &)=delete
etl::uint32_t size_type
Definition queue.hpp:26
auto operator=(queue const &) -> queue &=delete
auto messages_waiting() const -> etl::uint32_t
Definition queue.hpp:118
auto capacity() const -> size_type
Returns the capacity of the internal buffer.
Definition queue.hpp:80
auto operator=(queue &&) -> queue &=delete
auto reset() const -> bool
Definition queue.hpp:111
queue()
Creates a new queue. RAM is automatically allocated from the FreeRTOS heap.
Definition queue.hpp:66
T value_type
Definition queue.hpp:25
etl::pair is a class template that provides a way to store two heterogeneous objects as a single unit...
Definition pair.hpp:36
auto vQueueDelete(QueueHandle_t xQueue) -> void
Definition stubs.hpp:71
auto xQueueReset(QueueHandle_t xQueue) -> BaseType_t
Definition stubs.hpp:85
etl::uint32_t TickType_t
Definition stubs.hpp:24
auto xQueueCreate(UBaseType_t uxQueueLength, UBaseType_t uxItemSize) -> QueueHandle_t
Definition stubs.hpp:65
QueueDefinition * QueueHandle_t
Definition stubs.hpp:63
auto xQueueReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait) -> BaseType_t
Definition stubs.hpp:79
auto uxQueueMessagesWaiting(QueueHandle_t xQueue) -> UBaseType_t
Definition stubs.hpp:91
auto xQueueSend(QueueHandle_t xQueue, void const *pvItemToQueue, TickType_t xTicksToWait) -> BaseType_t
Definition stubs.hpp:73