stream_buffer.h
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
compile time).
configSUPPORT_DYNAMIC_ALLOCATION
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.
-
Parameters:
-
xBufferSizeBytes
|
The total number of bytes the stream buffer will be
able to hold at any one time.
|
xTriggerLevelBytes
|
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.
|
-
Returns:
-
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
buffer.
Example usage:
void vAFunction( void )
{
StreamBufferHandle_t xStreamBuffer;
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. */
}
else
{
/* The stream buffer was created successfully and can now be used. */
}
}
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|