28#ifndef FREERTOS_STREAMBUFFER_HPP
29#define FREERTOS_STREAMBUFFER_HPP
32#include "stream_buffer.h"
34#if (configUSE_STREAM_BUFFERS == 1)
70 static void*
operator new(size_t) =
delete;
71 static void*
operator new[](size_t) =
delete;
73 static void*
operator new(size_t,
void* ptr) {
77 static void*
operator new[](size_t,
void* ptr) {
92 return (handle != NULL);
133 inline size_t send(
const void* data,
const size_t length,
134 const TickType_t ticksToWait = portMAX_DELAY)
const {
135 return xStreamBufferSend(handle, data, length, ticksToWait);
176 inline size_t sendFromISR(
bool& higherPriorityTaskWoken,
const void* data,
177 const size_t length)
const {
178 BaseType_t taskWoken = pdFALSE;
179 const size_t result =
180 xStreamBufferSendFromISR(handle, data, length, &taskWoken);
181 if (taskWoken == pdTRUE) {
182 higherPriorityTaskWoken =
true;
198 inline size_t sendFromISR(
const void* data,
const size_t length)
const {
199 return xStreamBufferSendFromISR(handle, data, length, NULL);
239 inline size_t receive(
void* buffer,
const size_t bufferLength,
240 const TickType_t ticksToWait = portMAX_DELAY)
const {
241 return xStreamBufferReceive(handle, buffer, bufferLength, ticksToWait);
285 const size_t bufferLength)
const {
286 BaseType_t taskWoken = pdFALSE;
287 const size_t result =
288 xStreamBufferReceiveFromISR(handle, buffer, bufferLength, &taskWoken);
289 if (taskWoken == pdTRUE) {
290 higherPriorityTaskWoken =
true;
307 return xStreamBufferReceiveFromISR(handle, buffer, bufferLength, NULL);
326 return xStreamBufferBytesAvailable(handle);
345 return xStreamBufferSpacesAvailable(handle);
376 return (xStreamBufferSetTriggerLevel(handle, triggerLevel) == pdTRUE);
397 return (xStreamBufferReset(handle) == pdPASS);
415 return (xStreamBufferIsEmpty(handle) == pdTRUE);
433 return (xStreamBufferIsFull(handle) == pdTRUE);
450 vStreamBufferDelete(this->handle);
456 StreamBufferHandle_t handle = NULL;
459#if (configSUPPORT_DYNAMIC_ALLOCATION == 1)
504 explicit StreamBuffer(
const size_t size,
const size_t triggerLevel = 0) {
505 this->handle = xStreamBufferCreate(size, triggerLevel);
518#if (configSUPPORT_STATIC_ALLOCATION == 1)
563 this->handle = xStreamBufferCreateStatic(
sizeof(storage), triggerLevel,
564 storage, &staticStreamBuffer);
575 StaticStreamBuffer_t staticStreamBuffer;
Class that encapsulates the functionality of a FreeRTOS stream buffer.
Definition StreamBuffer.hpp:532
StaticStreamBuffer(const size_t triggerLevel=0)
Construct a new StaticStreamBuffer object by calling StreamBufferHandle_t xStreamBufferCreateStatic( ...
Definition StreamBuffer.hpp:562
Base class that provides the standard stream buffer interface to FreeRTOS::StreamBuffer and FreeRTOS:...
Definition StreamBuffer.hpp:61
bool isEmpty() const
Function that calls BaseType_t xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer )
Definition StreamBuffer.hpp:414
size_t sendFromISR(bool &higherPriorityTaskWoken, const void *data, const size_t length) const
Function that calls size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,...
Definition StreamBuffer.hpp:176
~StreamBufferBase()
Destroy the StreamBufferBase object by calling void vStreamBufferDelete( StreamBufferHandle_t xStream...
Definition StreamBuffer.hpp:449
bool reset() const
Function that calls BaseType_t xStreamBufferReset( StreamBufferHandle_t xStreamBuffer )
Definition StreamBuffer.hpp:396
size_t spacesAvailable() const
Function that calls size_t xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer )
Definition StreamBuffer.hpp:344
bool isValid() const
Function that checks if the underlying stream buffer handle is not NULL. This should be used to ensur...
Definition StreamBuffer.hpp:91
size_t bytesAvailable() const
Function that calls size_t xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer )
Definition StreamBuffer.hpp:325
size_t sendFromISR(const void *data, const size_t length) const
Function that calls size_t xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,...
Definition StreamBuffer.hpp:198
size_t receiveFromISR(void *buffer, const size_t bufferLength) const
Function that calls size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,...
Definition StreamBuffer.hpp:306
bool isFull() const
Function that calls BaseType_t xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer )
Definition StreamBuffer.hpp:432
size_t send(const void *data, const size_t length, const TickType_t ticksToWait=portMAX_DELAY) const
Function that calls size_t xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, const void *pvTxDat...
Definition StreamBuffer.hpp:133
size_t receive(void *buffer, const size_t bufferLength, const TickType_t ticksToWait=portMAX_DELAY) const
Function that calls size_t xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,...
Definition StreamBuffer.hpp:239
bool setTriggerLevel(const size_t triggerLevel=0) const
Function that calls BaseType_t xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,...
Definition StreamBuffer.hpp:375
size_t receiveFromISR(bool &higherPriorityTaskWoken, void *buffer, const size_t bufferLength) const
Function that calls size_t xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,...
Definition StreamBuffer.hpp:284
Class that encapsulates the functionality of a FreeRTOS stream buffer.
Definition StreamBuffer.hpp:470
StreamBuffer(const size_t size, const size_t triggerLevel=0)
Construct a new StreamBuffer object by calling StreamBufferHandle_t xStreamBufferCreate( size_t xBuff...
Definition StreamBuffer.hpp:504