28 #ifndef FREERTOS_MESSAGEBUFFER_HPP
29 #define FREERTOS_MESSAGEBUFFER_HPP
32 #include "message_buffer.h"
68 static void*
operator new(size_t,
void* ptr) {
return ptr; }
69 static void*
operator new[](size_t,
void* ptr) {
return ptr; }
70 static void*
operator new(size_t) =
delete;
71 static void*
operator new[](size_t) =
delete;
83 inline bool isValid()
const {
return (handle != NULL); }
129 inline size_t send(
const void* data,
const size_t length,
130 const TickType_t ticksToWait = portMAX_DELAY)
const {
131 return xMessageBufferSend(handle, data, length, ticksToWait);
178 inline size_t sendFromISR(
bool& higherPriorityTaskWoken,
const void* data,
179 const size_t length)
const {
180 BaseType_t taskWoken = pdFALSE;
181 size_t result = xMessageBufferSendFromISR(handle, data, length, &taskWoken);
182 if (taskWoken == pdTRUE) {
183 higherPriorityTaskWoken =
true;
199 inline size_t sendFromISR(
const void* data,
const size_t length)
const {
200 return xMessageBufferSendFromISR(handle, data, length, NULL);
241 inline size_t receive(
void* buffer,
const size_t bufferLength,
242 const TickType_t ticksToWait = portMAX_DELAY)
const {
243 return xMessageBufferReceive(handle, buffer, bufferLength, ticksToWait);
285 const size_t bufferLength)
const {
286 BaseType_t taskWoken = pdFALSE;
288 xMessageBufferReceiveFromISR(handle, buffer, bufferLength, &taskWoken);
289 if (taskWoken == pdTRUE) {
290 higherPriorityTaskWoken =
true;
307 return xMessageBufferReceiveFromISR(handle, buffer, bufferLength, NULL);
331 return xMessageBufferSpacesAvailable(handle);
351 inline bool reset()
const {
return (xMessageBufferReset(handle) == pdPASS); }
368 return (xMessageBufferIsEmpty(handle) == pdTRUE);
387 return (xMessageBufferIsFull(handle) == pdTRUE);
409 MessageBufferHandle_t handle = NULL;
412 #if (configSUPPORT_DYNAMIC_ALLOCATION == 1)
450 this->handle = xMessageBufferCreate(size);
463 #if (configSUPPORT_STATIC_ALLOCATION == 1)
498 this->handle = xMessageBufferCreateStatic(
sizeof(storage), storage,
499 &staticMessageBuffer);
510 StaticMessageBuffer_t staticMessageBuffer;
511 uint8_t storage[N] = {0};
Base class that provides the standard message buffer interface to FreeRTOS::MessageBuffer and FreeRTO...
Definition: MessageBuffer.hpp:59
bool reset() const
Function that calls BaseType_t xMessageBufferReset( MessageBufferHandle_t xMessageBuffer )
Definition: MessageBuffer.hpp:351
size_t spacesAvailable() const
Function that calls size_t xMessageBufferSpacesAvailable( MessageBufferHandle_t xMessageBuffer )
Definition: MessageBuffer.hpp:330
size_t send(const void *data, const size_t length, const TickType_t ticksToWait=portMAX_DELAY) const
Function that calls size_t xMessageBufferSend( MessageBufferHandle_t xMessageBuffer,...
Definition: MessageBuffer.hpp:129
size_t sendFromISR(bool &higherPriorityTaskWoken, const void *data, const size_t length) const
Function that calls size_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer,...
Definition: MessageBuffer.hpp:178
size_t receiveFromISR(void *buffer, const size_t bufferLength) const
Function that calls size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer,...
Definition: MessageBuffer.hpp:306
bool isFull() const
Function that calls BaseType_t xMessageBufferIsFull( MessageBufferHandle_t xMessageBuffer )
Definition: MessageBuffer.hpp:386
size_t receive(void *buffer, const size_t bufferLength, const TickType_t ticksToWait=portMAX_DELAY) const
Function that calls size_t xMessageBufferReceive( MessageBufferHandle_t xMessageBuffer,...
Definition: MessageBuffer.hpp:241
bool isValid() const
Function that checks if the underlying message buffer handle is not NULL. This should be used to ensu...
Definition: MessageBuffer.hpp:83
size_t sendFromISR(const void *data, const size_t length) const
Function that calls size_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer,...
Definition: MessageBuffer.hpp:199
size_t receiveFromISR(bool &higherPriorityTaskWoken, void *buffer, const size_t bufferLength) const
Function that calls size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer,...
Definition: MessageBuffer.hpp:284
~MessageBufferBase()
Destroy the MessageBufferBase object by calling void vMessageBufferDelete( MessageBufferHandle_t xMes...
Definition: MessageBuffer.hpp:404
bool isEmpty() const
Function that calls BaseType_t xMessageBufferIsEmpty( MessageBufferHandle_t xMessageBuffer )
Definition: MessageBuffer.hpp:367
Class that encapsulates the functionality of a FreeRTOS message buffer.
Definition: MessageBuffer.hpp:424
MessageBuffer(size_t size)
Construct a new MessageBuffer object by calling MessageBufferHandle_t xMessageBufferCreate( size_t xB...
Definition: MessageBuffer.hpp:449
Class that encapsulates the functionality of a FreeRTOS message buffer.
Definition: MessageBuffer.hpp:478
StaticMessageBuffer()
Construct a new StaticMessageBuffer object by calling MessageBufferHandle_t xMessageBufferCreateStati...
Definition: MessageBuffer.hpp:497