5#ifndef ELEC_C7222_UTILS_FREERTOS_STREAM_BUFFER_HPP
6#define ELEC_C7222_UTILS_FREERTOS_STREAM_BUFFER_HPP
48 bool Initialize(std::size_t buffer_size_bytes, std::size_t trigger_level_bytes);
53 std::size_t
Send(
const void* data, std::size_t data_length, std::uint32_t ticks_to_wait = 0);
55 std::size_t
SendFromISR(
const void* data, std::size_t data_length);
57 std::size_t
Receive(
void* out_data, std::size_t out_length, std::uint32_t ticks_to_wait = 0);
70 void* handle_{
nullptr};
104 std::size_t
Send(
const void* message, std::size_t message_length, std::uint32_t ticks_to_wait = 0);
106 std::size_t
SendFromISR(
const void* message, std::size_t message_length);
108 std::size_t
Receive(
void* out_message, std::size_t out_length, std::uint32_t ticks_to_wait = 0);
121 void* handle_{
nullptr};
Ownership-based wrapper for discrete message buffering.
Definition freertos_stream_buffer.hpp:92
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.
~FreeRtosMessageBuffer()
Destroy message buffer resources if initialized.
FreeRtosMessageBuffer(std::size_t buffer_size_bytes)
Construct and initialize a message buffer.
std::size_t ReceiveFromISR(void *out_message, std::size_t out_length)
Receive one message from ISR context.
std::size_t SendFromISR(const void *message, std::size_t message_length)
Send one message from ISR context.
bool Initialize(std::size_t buffer_size_bytes)
Initialize (or re-initialize) a message buffer.
bool Reset()
Reset message buffer state.
FreeRtosMessageBuffer()=default
Construct an uninitialized message buffer wrapper.
std::size_t NextMessageLength() const
std::size_t SpacesAvailable() const
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.
Ownership-based wrapper for byte-stream buffering.
Definition freertos_stream_buffer.hpp:34
FreeRtosStreamBuffer(std::size_t buffer_size_bytes, std::size_t trigger_level_bytes)
Construct and initialize a stream buffer.
std::size_t ReceiveFromISR(void *out_data, std::size_t out_length)
Receive bytes from ISR context.
std::size_t SpacesAvailable() const
std::size_t BytesAvailable() const
bool Initialize(std::size_t buffer_size_bytes, std::size_t trigger_level_bytes)
Initialize (or re-initialize) the stream buffer.
std::size_t Send(const void *data, std::size_t data_length, std::uint32_t ticks_to_wait=0)
Send bytes from task context.
bool Reset()
Reset stream buffer state.
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 SendFromISR(const void *data, std::size_t data_length)
Send bytes from ISR context.
~FreeRtosStreamBuffer()
Destroy stream buffer resources if initialized.
FreeRtosStreamBuffer()=default
Construct an uninitialized stream buffer wrapper.
Disable both copy and move operations.
Definition non_copyable.hpp:75
C7222 course abstractions namespace.
Definition ble.hpp:20
Base classes to control copy/move semantics.