28#ifndef FREERTOS_MESSAGEBUFFER_HPP
29#define FREERTOS_MESSAGEBUFFER_HPP
32#include "message_buffer.h"
68 static void*
operator new(size_t) =
delete;
69 static void*
operator new[](size_t) =
delete;
71 static void*
operator new(size_t,
void* ptr) {
75 static void*
operator new[](size_t,
void* ptr) {
90 return (handle != NULL);
137 inline size_t send(
const void* data,
const size_t length,
138 const TickType_t ticksToWait = portMAX_DELAY)
const {
139 return xMessageBufferSend(handle, data, length, ticksToWait);
186 inline size_t sendFromISR(
bool& higherPriorityTaskWoken,
const void* data,
187 const size_t length)
const {
188 BaseType_t taskWoken = pdFALSE;
189 const size_t result =
190 xMessageBufferSendFromISR(handle, data, length, &taskWoken);
191 if (taskWoken == pdTRUE) {
192 higherPriorityTaskWoken =
true;
208 inline size_t sendFromISR(
const void* data,
const size_t length)
const {
209 return xMessageBufferSendFromISR(handle, data, length, NULL);
250 inline size_t receive(
void* buffer,
const size_t bufferLength,
251 const TickType_t ticksToWait = portMAX_DELAY)
const {
252 return xMessageBufferReceive(handle, buffer, bufferLength, ticksToWait);
294 const size_t bufferLength)
const {
295 BaseType_t taskWoken = pdFALSE;
296 const size_t result =
297 xMessageBufferReceiveFromISR(handle, buffer, bufferLength, &taskWoken);
298 if (taskWoken == pdTRUE) {
299 higherPriorityTaskWoken =
true;
316 return xMessageBufferReceiveFromISR(handle, buffer, bufferLength, NULL);
340 return xMessageBufferSpacesAvailable(handle);
361 return (xMessageBufferReset(handle) == pdPASS);
379 return (xMessageBufferIsEmpty(handle) == pdTRUE);
398 return (xMessageBufferIsFull(handle) == pdTRUE);
416 vMessageBufferDelete(this->handle);
422 MessageBufferHandle_t handle = NULL;
425#if (configSUPPORT_DYNAMIC_ALLOCATION == 1)
463 this->handle = xMessageBufferCreate(size);
476#if (configSUPPORT_STATIC_ALLOCATION == 1)
511 this->handle = xMessageBufferCreateStatic(
sizeof(storage), storage,
512 &staticMessageBuffer);
523 StaticMessageBuffer_t staticMessageBuffer;
524 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:360
size_t spacesAvailable() const
Function that calls size_t xMessageBufferSpacesAvailable( MessageBufferHandle_t xMessageBuffer )
Definition MessageBuffer.hpp:339
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:137
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:186
size_t receiveFromISR(void *buffer, const size_t bufferLength) const
Function that calls size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer,...
Definition MessageBuffer.hpp:315
bool isFull() const
Function that calls BaseType_t xMessageBufferIsFull( MessageBufferHandle_t xMessageBuffer )
Definition MessageBuffer.hpp:397
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:250
bool isValid() const
Function that checks if the underlying message buffer handle is not NULL. This should be used to ensu...
Definition MessageBuffer.hpp:89
size_t sendFromISR(const void *data, const size_t length) const
Function that calls size_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer,...
Definition MessageBuffer.hpp:208
size_t receiveFromISR(bool &higherPriorityTaskWoken, void *buffer, const size_t bufferLength) const
Function that calls size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer,...
Definition MessageBuffer.hpp:293
~MessageBufferBase()
Destroy the MessageBufferBase object by calling void vMessageBufferDelete( MessageBufferHandle_t xMes...
Definition MessageBuffer.hpp:415
bool isEmpty() const
Function that calls BaseType_t xMessageBufferIsEmpty( MessageBufferHandle_t xMessageBuffer )
Definition MessageBuffer.hpp:378
Class that encapsulates the functionality of a FreeRTOS message buffer.
Definition MessageBuffer.hpp:437
MessageBuffer(size_t size)
Construct a new MessageBuffer object by calling MessageBufferHandle_t xMessageBufferCreate( size_t xB...
Definition MessageBuffer.hpp:462
Class that encapsulates the functionality of a FreeRTOS message buffer.
Definition MessageBuffer.hpp:491
StaticMessageBuffer()
Construct a new StaticMessageBuffer object by calling MessageBufferHandle_t xMessageBufferCreateStati...
Definition MessageBuffer.hpp:510