ELEC-C7222
Libraries for ELEC C7222 Course Work
Loading...
Searching...
No Matches
freertos_stream_buffer.hpp
Go to the documentation of this file.
1
5#ifndef ELEC_C7222_UTILS_FREERTOS_STREAM_BUFFER_HPP
6#define ELEC_C7222_UTILS_FREERTOS_STREAM_BUFFER_HPP
7
8#include <cstddef>
9#include <cstdint>
10
11#include "non_copyable.hpp"
12
13namespace c7222 {
14
35 public:
43 FreeRtosStreamBuffer(std::size_t buffer_size_bytes, std::size_t trigger_level_bytes);
48 bool Initialize(std::size_t buffer_size_bytes, std::size_t trigger_level_bytes);
51
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);
59 std::size_t ReceiveFromISR(void* out_data, std::size_t out_length);
61 bool Reset();
63 std::size_t BytesAvailable() const;
65 std::size_t SpacesAvailable() const;
67 bool IsValid() const;
68
69 private:
70 void* handle_{nullptr};
71};
72
93 public:
97 explicit FreeRtosMessageBuffer(std::size_t buffer_size_bytes);
99 bool Initialize(std::size_t buffer_size_bytes);
102
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);
110 std::size_t ReceiveFromISR(void* out_message, std::size_t out_length);
112 bool Reset();
114 std::size_t SpacesAvailable() const;
116 std::size_t NextMessageLength() const;
118 bool IsValid() const;
119
120 private:
121 void* handle_{nullptr};
122};
123
124} // namespace c7222
125
126#endif // ELEC_C7222_UTILS_FREERTOS_STREAM_BUFFER_HPP
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.