firmware
IEM Firmware Documentation
Loading...
Searching...
No Matches
xStreamBatchingBufferCreateStatic
Collaboration diagram for xStreamBatchingBufferCreateStatic:

stream_buffer.h

size_t xTriggerLevelBytes,
uint8_t *pucStreamBufferStorageArea,
StaticStreamBuffer_t *pxStaticStreamBuffer );
struct xSTATIC_STREAM_BUFFER StaticStreamBuffer_t
#define xStreamBatchingBufferCreateStatic(xBufferSizeBytes, xTriggerLevelBytes, pucStreamBufferStorageArea, pxStaticStreamBuffer)
Definition stream_buffer.h:454
struct StreamBufferDef_t * StreamBufferHandle_t
Definition stream_buffer.h:79

Creates a new stream batching buffer using statically allocated memory. See xStreamBatchingBufferCreate() for a version that uses dynamically allocated memory.

configSUPPORT_STATIC_ALLOCATION must be set to 1 in FreeRTOSConfig.h for xStreamBatchingBufferCreateStatic() to be available. configUSE_STREAM_BUFFERS must be set to 1 in for FreeRTOSConfig.h for xStreamBatchingBufferCreateStatic() to be available.

The difference between a stream buffer and a stream batching buffer is when a task performs read on a non-empty buffer:

  • The task reading from a non-empty stream buffer returns immediately regardless of the amount of data in the buffer.
  • The task reading from a non-empty steam batching buffer blocks until the amount of data in the buffer exceeds the trigger level or the block time expires.
Parameters
xBufferSizeBytesThe size, in bytes, of the buffer pointed to by the pucStreamBufferStorageArea parameter.
xTriggerLevelBytesThe number of bytes that must be in the stream batching buffer to unblock a task calling xStreamBufferReceive before the block time expires.
pucStreamBufferStorageAreaMust point to a uint8_t array that is at least xBufferSizeBytes big. This is the array to which streams are copied when they are written to the stream batching buffer.
pxStaticStreamBufferMust point to a variable of type StaticStreamBuffer_t, which will be used to hold the stream batching buffer's data structure.
pxSendCompletedCallbackCallback invoked when number of bytes at least equal to trigger level is sent to the stream batching buffer. If the parameter is NULL, it will use the default implementation provided by sbSEND_COMPLETED macro. To enable the callback, configUSE_SB_COMPLETED_CALLBACK must be set to 1 in FreeRTOSConfig.h.
pxReceiveCompletedCallbackCallback invoked when more than zero bytes are read from a stream batching buffer. If the parameter is NULL, it will use the default implementation provided by sbRECEIVE_COMPLETED macro. To enable the callback, configUSE_SB_COMPLETED_CALLBACK must be set to 1 in FreeRTOSConfig.h.
Returns
If the stream batching buffer is created successfully then a handle to the created stream batching buffer is returned. If either pucStreamBufferStorageArea or pxStaticstreamBuffer are NULL then NULL is returned.

Example use:

// Used to dimension the array used to hold the streams. The available space
// will actually be one less than this, so 999.
#define STORAGE_SIZE_BYTES 1000
// Defines the memory that will actually hold the streams within the stream
// batching buffer.
static uint8_t ucStorageBuffer[ STORAGE_SIZE_BYTES ];
// The variable used to hold the stream batching buffer structure.
StaticStreamBuffer_t xStreamBufferStruct;
void MyFunction( void )
{
StreamBufferHandle_t xStreamBatchingBuffer;
const size_t xTriggerLevel = 1;
xStreamBatchingBuffer = xStreamBatchingBufferCreateStatic( sizeof( ucStorageBuffer ),
xTriggerLevel,
ucStorageBuffer,
&xStreamBufferStruct );
// As neither the pucStreamBufferStorageArea or pxStaticStreamBuffer
// parameters were NULL, xStreamBatchingBuffer will not be NULL, and can be
// used to reference the created stream batching buffer in other stream
// buffer API calls.
// Other code that uses the stream batching buffer can go here.
}