FreeRTOS-Cpp
Public Member Functions | List of all members
FreeRTOS::MessageBuffer Class Reference

Class that encapsulates the functionality of a FreeRTOS message buffer. More...

#include <FreeRTOS/MessageBuffer.hpp>

Inheritance diagram for FreeRTOS::MessageBuffer:
Inheritance graph
[legend]
Collaboration diagram for FreeRTOS::MessageBuffer:
Collaboration graph
[legend]

Public Member Functions

 MessageBuffer (size_t size)
 Construct a new MessageBuffer object by calling MessageBufferHandle_t xMessageBufferCreate( size_t xBufferSizeBytes ) More...
 
 MessageBuffer (const MessageBuffer &)=delete
 
MessageBufferoperator= (const MessageBuffer &)=delete
 
 MessageBuffer (MessageBuffer &&) noexcept=default
 
MessageBufferoperator= (MessageBuffer &&) noexcept=default
 
- Public Member Functions inherited from FreeRTOS::MessageBufferBase
 MessageBufferBase (const MessageBufferBase &)=delete
 
MessageBufferBaseoperator= (const MessageBufferBase &)=delete
 
bool isValid () const
 Function that checks if the underlying message buffer handle is not NULL. This should be used to ensure a message buffer has been created correctly. More...
 
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, const void *pvTxData, size_t xDataLengthBytes, TickType_t xTicksToWait ) More...
 
size_t sendFromISR (bool &higherPriorityTaskWoken, const void *data, const size_t length) const
 Function that calls size_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer, const void *pvTxData, size_t xDataLengthBytes, BaseType_t *pxHigherPriorityTaskWoken ) More...
 
size_t sendFromISR (const void *data, const size_t length) const
 Function that calls size_t xMessageBufferSendFromISR( MessageBufferHandle_t xMessageBuffer, const void *pvTxData, size_t xDataLengthBytes, BaseType_t *pxHigherPriorityTaskWoken ) More...
 
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, void *pvRxData, size_t xBufferLengthBytes, TickType_t xTicksToWait ) More...
 
size_t receiveFromISR (bool &higherPriorityTaskWoken, void *buffer, const size_t bufferLength) const
 Function that calls size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer, void *pvRxData, size_t xBufferLengthBytes, BaseType_t *pxHigherPriorityTaskWoken ) More...
 
size_t receiveFromISR (void *buffer, const size_t bufferLength) const
 Function that calls size_t xMessageBufferReceiveFromISR( MessageBufferHandle_t xMessageBuffer, void *pvRxData, size_t xBufferLengthBytes, BaseType_t *pxHigherPriorityTaskWoken ) More...
 
size_t spacesAvailable () const
 Function that calls size_t xMessageBufferSpacesAvailable( MessageBufferHandle_t xMessageBuffer ) More...
 
bool reset () const
 Function that calls BaseType_t xMessageBufferReset( MessageBufferHandle_t xMessageBuffer ) More...
 
bool isEmpty () const
 Function that calls BaseType_t xMessageBufferIsEmpty( MessageBufferHandle_t xMessageBuffer ) More...
 
bool isFull () const
 Function that calls BaseType_t xMessageBufferIsFull( MessageBufferHandle_t xMessageBuffer ) More...
 

Additional Inherited Members

- Static Public Member Functions inherited from FreeRTOS::MessageBufferBase
static void * operator new (size_t, void *ptr)
 
static void * operator new[] (size_t, void *ptr)
 
static void * operator new (size_t)=delete
 
static void * operator new[] (size_t)=delete
 

Detailed Description

Class that encapsulates the functionality of a FreeRTOS message buffer.

A message buffer using dynamically allocated memory from the FreeRTOS heap. See FreeRTOS::StaticMessageBuffer for a version that uses statically allocated memory (memory that is allocated at compile time).

Constructor & Destructor Documentation

◆ MessageBuffer()

FreeRTOS::MessageBuffer::MessageBuffer ( size_t  size)
inlineexplicit

Construct a new MessageBuffer object by calling MessageBufferHandle_t xMessageBufferCreate( size_t xBufferSizeBytes )

MessageBuffer.hpp

See also
https://www.freertos.org/xMessageBufferCreate.html
Warning
The user should call isValid() on this object to verify that the message buffer was created successfully in case the memory required to create the message buffer could not be allocated.
Parameters
sizeThe total number of bytes (not messages) the message buffer will be able to hold at any one time. When a message is written to the message buffer an additional sizeof( size_t ) bytes are also written to store the message's length. sizeof( size_t ) is typically 4 bytes on a 32-bit architecture, so on most 32-bit architectures a 10 byte message will take up 14 bytes of message buffer space.

Example Usage

#include <FreeRTOS/MessageBuffer.hpp>
#include <FreeRTOS/Task.hpp>
class MyTask : public FreeRTOS::Task {
public:
void taskFunction() final;
};
void MyTask::taskFunction() {
constexpr size_t messageBufferSize = 100;
// Create a message buffer that can hold 100 bytes. The memory used to hold
// both the message buffer structure and the data in the message buffer is
// allocated dynamically.
FreeRTOS::MessageBuffer messageBuffer(messageBufferSize);
if (messageBuffer.isValid()) {
// The message buffer was created successfully and can now be used.
} else {
// There was not enough heap memory space available to create the message
// buffer.
}
// Rest of task code.
}
Class that encapsulates the functionality of a FreeRTOS message buffer.
Definition: MessageBuffer.hpp:424
Class that encapsulates the functionality of a FreeRTOS task.
Definition: Task.hpp:1323

The documentation for this class was generated from the following file: