StreamBufferHandle_t xStreamBufferCreate( size_t xBufferSizeBytes,
size_t xTriggerLevelBytes );
Creates a new stream buffer using dynamically
allocated memory. See xStreamBufferCreateStatic() for a
version that uses statically allocated memory (memory that is allocated at
must be set to 1 or left undefined in FreeRTOSConfig.h for xStreamBufferCreate()
to be available.
Stream buffer functionality is enabled by including the FreeRTOS/source/stream_buffer.c
source file in the build.
The total number of bytes the stream buffer will be
able to hold at any one time.
The number of bytes that must be in the stream
buffer before a task that is blocked on the stream buffer to wait for data is
moved out of the blocked state. For example, if a task is blocked on a read
of an empty stream buffer that has a trigger level of 1 then the task will be
unblocked when a single byte is written to the buffer or the task’s block
time expires. As another example, if a task is blocked on a read of an empty
stream buffer that has a trigger level of 10 then the task will not be
unblocked until the stream buffer contains at least 10 bytes or the task’s
block time expires. If a reading task’s block time expires before the
trigger level is reached then the task will still receive however many bytes
are actually available. Setting a trigger level of 0 will result in a
trigger level of 1 being used. It is not valid to specify a trigger level
that is greater than the buffer size.
If NULL is returned, then the stream buffer cannot be created
because there is insufficient heap memory available for FreeRTOS to allocate
the stream buffer data structures and storage area. A non-NULL value being
returned indicates that the stream buffer has been created successfully –
the returned value should be stored as the handle to the created stream
void vAFunction( void )
const size_t xStreamBufferSizeBytes = 100, xTriggerLevel = 10;
/* Create a stream buffer that can hold 100 bytes. The memory used to hold
both the stream buffer structure and the data in the stream buffer is
allocated dynamically. */
xStreamBuffer = xStreamBufferCreate( xStreamBufferSizeBytes, xTriggerLevel );
if( xStreamBuffer == NULL )
/* There was not enough heap memory space available to create the
stream buffer. */
/* The stream buffer was created successfully and can now be used. */
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.