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

Ownership-based wrapper for byte-stream buffering. More...

#include <freertos_stream_buffer.hpp>

Inheritance diagram for c7222::FreeRtosStreamBuffer:
Inheritance graph
Collaboration diagram for c7222::FreeRtosStreamBuffer:
Collaboration graph

Public Member Functions

 FreeRtosStreamBuffer ()=default
 Construct an uninitialized stream buffer wrapper.
 
 FreeRtosStreamBuffer (std::size_t buffer_size_bytes, std::size_t trigger_level_bytes)
 Construct and initialize a stream buffer.
 
bool Initialize (std::size_t buffer_size_bytes, std::size_t trigger_level_bytes)
 Initialize (or re-initialize) the stream buffer.
 
 ~FreeRtosStreamBuffer ()
 Destroy stream buffer resources if initialized.
 
std::size_t Send (const void *data, std::size_t data_length, std::uint32_t ticks_to_wait=0)
 Send bytes from task context.
 
std::size_t SendFromISR (const void *data, std::size_t data_length)
 Send bytes from ISR context.
 
std::size_t Receive (void *out_data, std::size_t out_length, std::uint32_t ticks_to_wait=0)
 Receive bytes from task context.
 
std::size_t ReceiveFromISR (void *out_data, std::size_t out_length)
 Receive bytes from ISR context.
 
bool Reset ()
 Reset stream buffer state.
 
std::size_t BytesAvailable () const
 
std::size_t SpacesAvailable () 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 byte-stream buffering.

Stream buffers provide contiguous byte FIFO semantics and are useful for variable chunk transport where record/message boundaries are not required. Send/receive operations are explicit; RAII here refers to handle cleanup.

Typical usage:

const char payload[] = "abc";
(void)stream.Send(payload, sizeof(payload), 10);
char out[8] = {};
const std::size_t n = stream.Receive(out, sizeof(out), 10);
(void)n;
Ownership-based wrapper for byte-stream buffering.
Definition freertos_stream_buffer.hpp:34

Constructor & Destructor Documentation

◆ FreeRtosStreamBuffer() [1/2]

c7222::FreeRtosStreamBuffer::FreeRtosStreamBuffer ( )
default

Construct an uninitialized stream buffer wrapper.

◆ FreeRtosStreamBuffer() [2/2]

c7222::FreeRtosStreamBuffer::FreeRtosStreamBuffer ( std::size_t  buffer_size_bytes,
std::size_t  trigger_level_bytes 
)

Construct and initialize a stream buffer.

Parameters
buffer_size_bytesTotal buffer storage size.
trigger_level_bytesWake threshold for readers.

◆ ~FreeRtosStreamBuffer()

c7222::FreeRtosStreamBuffer::~FreeRtosStreamBuffer ( )

Destroy stream buffer resources if initialized.

Member Function Documentation

◆ BytesAvailable()

std::size_t c7222::FreeRtosStreamBuffer::BytesAvailable ( ) const
Returns
Number of readable bytes.

◆ Initialize()

bool c7222::FreeRtosStreamBuffer::Initialize ( std::size_t  buffer_size_bytes,
std::size_t  trigger_level_bytes 
)

Initialize (or re-initialize) the stream buffer.

Returns
true on success.

◆ IsValid()

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

◆ Receive()

std::size_t c7222::FreeRtosStreamBuffer::Receive ( void *  out_data,
std::size_t  out_length,
std::uint32_t  ticks_to_wait = 0 
)

Receive bytes from task context.

Returns
bytes received.

◆ ReceiveFromISR()

std::size_t c7222::FreeRtosStreamBuffer::ReceiveFromISR ( void *  out_data,
std::size_t  out_length 
)

Receive bytes from ISR context.

Returns
bytes received.

◆ Reset()

bool c7222::FreeRtosStreamBuffer::Reset ( )

Reset stream buffer state.

◆ Send()

std::size_t c7222::FreeRtosStreamBuffer::Send ( const void *  data,
std::size_t  data_length,
std::uint32_t  ticks_to_wait = 0 
)

Send bytes from task context.

Returns
bytes accepted.

◆ SendFromISR()

std::size_t c7222::FreeRtosStreamBuffer::SendFromISR ( const void *  data,
std::size_t  data_length 
)

Send bytes from ISR context.

Returns
bytes accepted.

◆ SpacesAvailable()

std::size_t c7222::FreeRtosStreamBuffer::SpacesAvailable ( ) const
Returns
Number of writable bytes.

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