ELEC-C7222
Libraries for ELEC C7222 Course Work
Loading...
Searching...
No Matches
c7222::FreeRtosMessageBuffer Class Reference

Ownership-based wrapper for discrete message buffering. More...

#include <freertos_stream_buffer.hpp>

Inheritance diagram for c7222::FreeRtosMessageBuffer:
Inheritance graph
Collaboration diagram for c7222::FreeRtosMessageBuffer:
Collaboration graph

Public Member Functions

 FreeRtosMessageBuffer ()=default
 Construct an uninitialized message buffer wrapper.
 
 FreeRtosMessageBuffer (std::size_t buffer_size_bytes)
 Construct and initialize a message buffer.
 
bool Initialize (std::size_t buffer_size_bytes)
 Initialize (or re-initialize) a message buffer.
 
 ~FreeRtosMessageBuffer ()
 Destroy message buffer resources if initialized.
 
std::size_t Send (const void *message, std::size_t message_length, std::uint32_t ticks_to_wait=0)
 Send one message from task context.
 
std::size_t SendFromISR (const void *message, std::size_t message_length)
 Send one message from ISR context.
 
std::size_t Receive (void *out_message, std::size_t out_length, std::uint32_t ticks_to_wait=0)
 Receive one message from task context.
 
std::size_t ReceiveFromISR (void *out_message, std::size_t out_length)
 Receive one message from ISR context.
 
bool Reset ()
 Reset message buffer state.
 
std::size_t SpacesAvailable () const
 
std::size_t NextMessageLength () const
 
bool IsValid () const
 
- Public Member Functions inherited from c7222::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from c7222::NonMovable
 NonMovable (const NonMovable &)=default
 
NonMovableoperator= (const NonMovable &)=default
 
 NonMovable (NonMovable &&)=delete
 
NonMovableoperator= (NonMovable &&)=delete
 

Additional Inherited Members

- Protected Member Functions inherited from c7222::NonCopyableNonMovable
 NonCopyableNonMovable ()=default
 
 ~NonCopyableNonMovable ()=default
 
- Protected Member Functions inherited from c7222::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from c7222::NonMovable
 NonMovable ()=default
 
 ~NonMovable ()=default
 

Detailed Description

Ownership-based wrapper for discrete message buffering.

Message buffers preserve message boundaries and are suitable for variable-size packet/message transfer between contexts. Send/receive operations are explicit; RAII here refers to handle cleanup.

Typical usage:

const std::uint32_t value = 7;
(void)messages.Send(&value, sizeof(value), 10);
std::uint32_t out = 0;
const std::size_t n = messages.Receive(&out, sizeof(out), 10);
(void)n;
Ownership-based wrapper for discrete message buffering.
Definition freertos_stream_buffer.hpp:92

Constructor & Destructor Documentation

◆ FreeRtosMessageBuffer() [1/2]

c7222::FreeRtosMessageBuffer::FreeRtosMessageBuffer ( )
default

Construct an uninitialized message buffer wrapper.

◆ FreeRtosMessageBuffer() [2/2]

c7222::FreeRtosMessageBuffer::FreeRtosMessageBuffer ( std::size_t  buffer_size_bytes)
explicit

Construct and initialize a message buffer.

◆ ~FreeRtosMessageBuffer()

c7222::FreeRtosMessageBuffer::~FreeRtosMessageBuffer ( )

Destroy message buffer resources if initialized.

Member Function Documentation

◆ Initialize()

bool c7222::FreeRtosMessageBuffer::Initialize ( std::size_t  buffer_size_bytes)

Initialize (or re-initialize) a message buffer.

◆ IsValid()

bool c7222::FreeRtosMessageBuffer::IsValid ( ) const
Returns
true if the wrapper owns a valid message buffer handle.

◆ NextMessageLength()

std::size_t c7222::FreeRtosMessageBuffer::NextMessageLength ( ) const
Returns
Length of next queued message in bytes.

◆ Receive()

std::size_t c7222::FreeRtosMessageBuffer::Receive ( void *  out_message,
std::size_t  out_length,
std::uint32_t  ticks_to_wait = 0 
)

Receive one message from task context.

Returns
bytes received.

◆ ReceiveFromISR()

std::size_t c7222::FreeRtosMessageBuffer::ReceiveFromISR ( void *  out_message,
std::size_t  out_length 
)

Receive one message from ISR context.

Returns
bytes received.

◆ Reset()

bool c7222::FreeRtosMessageBuffer::Reset ( )

Reset message buffer state.

◆ Send()

std::size_t c7222::FreeRtosMessageBuffer::Send ( const void *  message,
std::size_t  message_length,
std::uint32_t  ticks_to_wait = 0 
)

Send one message from task context.

Returns
bytes accepted.

◆ SendFromISR()

std::size_t c7222::FreeRtosMessageBuffer::SendFromISR ( const void *  message,
std::size_t  message_length 
)

Send one message from ISR context.

Returns
bytes accepted.

◆ SpacesAvailable()

std::size_t c7222::FreeRtosMessageBuffer::SpacesAvailable ( ) const
Returns
Writable bytes available for future messages.

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