EasyManua.ls Logo

Espressif ESP32-S2 - Page 954

Espressif ESP32-S2
1695 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Chapter 2. API Reference
(continued from previous page)
sizeof( ucRxData ),
&xHigherPriorityTaskWoken );
if( xReceivedBytes > 0 )
{
// ucRxData contains xReceivedBytes read from the stream buffer.
// Process the stream here....
}
// If xHigherPriorityTaskWoken was set to pdTRUE inside
// xStreamBufferReceiveFromISR() then a task that has a priority above the
// priority of the currently executing task was unblocked and a context
// switch should be performed to ensure the ISR returns to the unblocked
// task. In most FreeRTOS ports this is done by simply passing
// xHigherPriorityTaskWoken into taskYIELD_FROM_ISR(), which will test the
// variables value, and perform the context switch if necessary. Check the
// documentation for the port in use for port specific instructions.
taskYIELD_FROM_ISR( xHigherPriorityTaskWoken );
}
Return The number of bytes read from the stream buffer, if any.
Parameters
xStreamBuffer: The handle of the stream buffer from which a stream is being received.
pvRxData: A pointer to the buffer into which the received bytes are copied.
xBufferLengthBytes: The length of the buffer pointed to by the pvRxData parameter. This
sets the maximum number of bytes to receive in one call. xStreamBufferReceive will return as many
bytes as possible up to a maximum set by xBufferLengthBytes.
pxHigherPriorityTaskWoken: It is possible that a stream buffer will have a task blocked
on it waiting for space to become available. Calling xStreamBufferReceiveFromISR() can make
space available, and so cause a task that is waiting for space to leave the Blocked state. If call-
ing xStreamBufferReceiveFromISR() causes a task to leave the Blocked state, and the unblocked
task has a priority higher than the currently executing task (the task that was interrupted), then,
internally, xStreamBufferReceiveFromISR() will set *pxHigherPriorityTaskWoken to pdTRUE. If
xStreamBufferReceiveFromISR() sets this value to pdTRUE, then normally a context switch should
be performed before the interrupt is exited. That will ensure the interrupt returns directly to the
highest priority Ready state task. *pxHigherPriorityTaskWoken should be set to pdFALSE before
it is passed into the function. See the code example below for an example.
void vStreamBufferDelete(StreamBufferHandle_t xStreamBuer)
Deletes a stream buffer that was previously created using a call to xStreamBufferCreate() or xStreamBuffer-
CreateStatic(). If the stream buffer was created using dynamic memory (that is, by xStreamBufferCreate()),
then the allocated memory is freed.
A stream buffer handle must not be used after the stream buffer has been deleted.
Parameters
xStreamBuffer: The handle of the stream buffer to be deleted.
BaseType_t xStreamBufferIsFull(StreamBuerHandle_t xStreamBuer)
Queries a stream buffer to see if it is full. A stream buffer is full if it does not have any free space, and therefore
cannot accept any more data.
Return If the stream buffer is full then pdTRUE is returned. Otherwise pdFALSE is returned.
Parameters
xStreamBuffer: The handle of the stream buffer being queried.
BaseType_t xStreamBufferIsEmpty(StreamBuerHandle_t xStreamBuer)
Queries a stream buffer to see if it is empty. A stream buffer is empty if it does not contain any data.
Return If the stream buffer is empty then pdTRUE is returned. Otherwise pdFALSE is returned.
Parameters
xStreamBuffer: The handle of the stream buffer being queried.
Espressif Systems 943
Submit Document Feedback
Release v4.4

Table of Contents