stream_buffer.c File Reference
`#include <stdint.h>`
`#include <string.h>`
`#include "FreeRTOS.h"`
`#include "task.h"`
`#include "stream_buffer.h"`
Include dependency graph for stream_buffer.c:

## Data Structures

struct | xSTREAM_BUFFER

## Macros

#define | MPU_WRAPPERS_INCLUDED_FROM_API_FILE
#define | sbRECEIVE_COMPLETED(pxStreamBuffer)
#define | sbRECEIVE_COMPLETED_FROM_ISR(pxStreamBuffer, pxHigherPriorityTaskWoken)
#define | sbSEND_COMPLETED(pxStreamBuffer)
#define | sbSEND_COMPLETE_FROM_ISR(pxStreamBuffer, pxHigherPriorityTaskWoken)
#define | sbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( size_t ) )
#define | sbFLAGS_IS_MESSAGE_BUFFER ( ( uint8_t ) 1 ) /* Set if the stream buffer was created as a message buffer, in which case it holds discrete messages rather than a stream. */
#define | sbFLAGS_IS_STATICALLY_ALLOCATED ( ( uint8_t ) 2 ) /* Set if the stream buffer was created using statically allocated memory. */

## Typedefs

typedef struct xSTREAM_BUFFER | StreamBuffer_t

## Functions

static size_t | prvBytesInBuffer (const StreamBuffer_t *const pxStreamBuffer) PRIVILEGED_FUNCTION
static size_t | prvWriteBytesToBuffer (StreamBuffer_t *const pxStreamBuffer, const uint8_t *pucData, size_t xCount) PRIVILEGED_FUNCTION
static size_t | prvReadMessageFromBuffer (StreamBuffer_t *pxStreamBuffer, void *pvRxData, size_t xBufferLengthBytes, size_t xBytesAvailable, size_t xBytesToStoreMessageLength) PRIVILEGED_FUNCTION
static size_t | prvWriteMessageToBuffer (StreamBuffer_t *const pxStreamBuffer, const void *pvTxData, size_t xDataLengthBytes, size_t xSpace, size_t xRequiredSpace) PRIVILEGED_FUNCTION
static size_t | prvReadBytesFromBuffer (StreamBuffer_t *pxStreamBuffer, uint8_t *pucData, size_t xMaxCount, size_t xBytesAvailable)
static PRIVILEGED_FUNCTION void | prvInitialiseNewStreamBuffer (StreamBuffer_t *const pxStreamBuffer, uint8_t *const pucBuffer, size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer) PRIVILEGED_FUNCTION
StreamBufferHandle_t | xStreamBufferGenericCreate (size_t xBufferSizeBytes, size_t xTriggerLevelBytes, BaseType_t xIsMessageBuffer)
void | vStreamBufferDelete (StreamBufferHandle_t xStreamBuffer)
BaseType_t | xStreamBufferReset (StreamBufferHandle_t xStreamBuffer)
BaseType_t | xStreamBufferSetTriggerLevel (StreamBufferHandle_t xStreamBuffer, size_t xTriggerLevel)
size_t | xStreamBufferSpacesAvailable (StreamBufferHandle_t xStreamBuffer)
size_t | xStreamBufferBytesAvailable (StreamBufferHandle_t xStreamBuffer)
size_t | xStreamBufferSend (StreamBufferHandle_t xStreamBuffer, const void *pvTxData, size_t xDataLengthBytes, TickType_t xTicksToWait)
size_t | xStreamBufferSendFromISR (StreamBufferHandle_t xStreamBuffer, const void *pvTxData, size_t xDataLengthBytes, BaseType_t *const pxHigherPriorityTaskWoken)
size_t | xStreamBufferReceive (StreamBufferHandle_t xStreamBuffer, void *pvRxData, size_t xBufferLengthBytes, TickType_t xTicksToWait)
size_t | xStreamBufferReceiveFromISR (StreamBufferHandle_t xStreamBuffer, void *pvRxData, size_t xBufferLengthBytes, BaseType_t *const pxHigherPriorityTaskWoken)
BaseType_t | xStreamBufferIsEmpty (StreamBufferHandle_t xStreamBuffer)
BaseType_t | xStreamBufferIsFull (StreamBufferHandle_t xStreamBuffer)
BaseType_t | xStreamBufferSendCompletedFromISR (StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken)
BaseType_t | xStreamBufferReceiveCompletedFromISR (StreamBufferHandle_t xStreamBuffer, BaseType_t *pxHigherPriorityTaskWoken)

## Macro Definition Documentation

## MPU_WRAPPERS_INCLUDED_FROM_API_FILE

#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE

## sbBYTES_TO_STORE_MESSAGE_LENGTH

#define sbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( size_t ) )

## sbFLAGS_IS_MESSAGE_BUFFER

#define sbFLAGS_IS_MESSAGE_BUFFER ( ( uint8_t ) 1 ) /* Set if the stream buffer was created as a message buffer, in which case it holds discrete messages rather than a stream. */

## sbFLAGS_IS_STATICALLY_ALLOCATED

#define sbFLAGS_IS_STATICALLY_ALLOCATED ( ( uint8_t ) 2 ) /* Set if the stream buffer was created using statically allocated memory. */

## sbRECEIVE_COMPLETED

#define sbRECEIVE_COMPLETED | ( |  | pxStreamBuffer | ) |

Value:
vTaskSuspendAll(); \
{ \
if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) \
{ \
( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToSend, \
( uint32_t ) 0, \
eNoAction ); \
( pxStreamBuffer )->xTaskWaitingToSend = NULL; \
} \
} \
( void ) xTaskResumeAll();

## sbRECEIVE_COMPLETED_FROM_ISR

#define sbRECEIVE_COMPLETED_FROM_ISR | ( |  | pxStreamBuffer,
|  |  | pxHigherPriorityTaskWoken
| ) |  |

Value:
{ \
UBaseType_t uxSavedInterruptStatus; \
\
uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); \
{ \
if( ( pxStreamBuffer )->xTaskWaitingToSend != NULL ) \
{ \
( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToSend, \
( uint32_t ) 0, \
eNoAction, \
pxHigherPriorityTaskWoken ); \
( pxStreamBuffer )->xTaskWaitingToSend = NULL; \
} \
} \
portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); \
}

## sbSEND_COMPLETE_FROM_ISR

#define sbSEND_COMPLETE_FROM_ISR | ( |  | pxStreamBuffer,
|  |  | pxHigherPriorityTaskWoken
| ) |  |

Value:
{ \
UBaseType_t uxSavedInterruptStatus; \
\
uxSavedInterruptStatus = ( UBaseType_t ) portSET_INTERRUPT_MASK_FROM_ISR(); \
{ \
if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) \
{ \
( void ) xTaskNotifyFromISR( ( pxStreamBuffer )->xTaskWaitingToReceive, \
( uint32_t ) 0, \
eNoAction, \
pxHigherPriorityTaskWoken ); \
( pxStreamBuffer )->xTaskWaitingToReceive = NULL; \
} \
} \
portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus ); \
}

## sbSEND_COMPLETED

#define sbSEND_COMPLETED | ( |  | pxStreamBuffer | ) |

Value:
vTaskSuspendAll(); \
{ \
if( ( pxStreamBuffer )->xTaskWaitingToReceive != NULL ) \
{ \
( void ) xTaskNotify( ( pxStreamBuffer )->xTaskWaitingToReceive, \
( uint32_t ) 0, \
eNoAction ); \
( pxStreamBuffer )->xTaskWaitingToReceive = NULL; \
} \
} \
( void ) xTaskResumeAll();

## Typedef Documentation

## StreamBuffer_t

typedef struct xSTREAM_BUFFER StreamBuffer_t

## Function Documentation

## prvBytesInBuffer()

static size_t prvBytesInBuffer | ( | const StreamBuffer_t *const | pxStreamBuffer | ) |

static

Here is the caller graph for this function:

## prvInitialiseNewStreamBuffer()

static void prvInitialiseNewStreamBuffer | ( | StreamBuffer_t *const | pxStreamBuffer,
|  | uint8_t *const | pucBuffer,
|  | size_t | xBufferSizeBytes,
|  | size_t | xTriggerLevelBytes,
|  | BaseType_t | xIsMessageBuffer
| ) |  |

static

Here is the caller graph for this function:

## prvReadBytesFromBuffer()

static size_t prvReadBytesFromBuffer | ( | StreamBuffer_t * | pxStreamBuffer,
|  | uint8_t * | pucData,
|  | size_t | xMaxCount,
|  | size_t | xBytesAvailable
| ) |  |

static

Here is the caller graph for this function:

## prvReadMessageFromBuffer()

static size_t prvReadMessageFromBuffer | ( | StreamBuffer_t * | pxStreamBuffer,
|  | void * | pvRxData,
|  | size_t | xBufferLengthBytes,
|  | size_t | xBytesAvailable,
|  | size_t | xBytesToStoreMessageLength
| ) |  |

static

Here is the call graph for this function:
Here is the caller graph for this function:

## prvWriteBytesToBuffer()

static size_t prvWriteBytesToBuffer | ( | StreamBuffer_t *const | pxStreamBuffer,
|  | const uint8_t * | pucData,
|  | size_t | xCount
| ) |  |

static

Here is the caller graph for this function:

## prvWriteMessageToBuffer()

static size_t prvWriteMessageToBuffer | ( | StreamBuffer_t *const | pxStreamBuffer,
|  | const void * | pvTxData,
|  | size_t | xDataLengthBytes,
|  | size_t | xSpace,
|  | size_t | xRequiredSpace
| ) |  |

static

Here is the call graph for this function:
Here is the caller graph for this function:

## vStreamBufferDelete()

void vStreamBufferDelete | ( | StreamBufferHandle_t | xStreamBuffer | ) |

Here is the call graph for this function:

## xStreamBufferBytesAvailable()

size_t xStreamBufferBytesAvailable | ( | StreamBufferHandle_t | xStreamBuffer | ) |

Here is the call graph for this function:

## xStreamBufferGenericCreate()

StreamBufferHandle_t xStreamBufferGenericCreate | ( | size_t | xBufferSizeBytes,
|  | size_t | xTriggerLevelBytes,
|  | BaseType_t | xIsMessageBuffer
| ) |  |

Here is the call graph for this function:

## xStreamBufferIsEmpty()

BaseType_t xStreamBufferIsEmpty | ( | StreamBufferHandle_t | xStreamBuffer | ) |

## xStreamBufferIsFull()

BaseType_t xStreamBufferIsFull | ( | StreamBufferHandle_t | xStreamBuffer | ) |

Here is the call graph for this function:

## xStreamBufferReceive()

size_t xStreamBufferReceive | ( | StreamBufferHandle_t | xStreamBuffer,
|  | void * | pvRxData,
|  | size_t | xBufferLengthBytes,
|  | TickType_t | xTicksToWait
| ) |  |

Here is the call graph for this function:

## xStreamBufferReceiveCompletedFromISR()

BaseType_t xStreamBufferReceiveCompletedFromISR | ( | StreamBufferHandle_t | xStreamBuffer,
|  | BaseType_t * | pxHigherPriorityTaskWoken
| ) |  |

## xStreamBufferReceiveFromISR()

size_t xStreamBufferReceiveFromISR | ( | StreamBufferHandle_t | xStreamBuffer,
|  | void * | pvRxData,
|  | size_t | xBufferLengthBytes,
|  | BaseType_t *const | pxHigherPriorityTaskWoken
| ) |  |

Here is the call graph for this function:

## xStreamBufferReset()

BaseType_t xStreamBufferReset | ( | StreamBufferHandle_t | xStreamBuffer | ) |

Here is the call graph for this function:

## xStreamBufferSend()

size_t xStreamBufferSend | ( | StreamBufferHandle_t | xStreamBuffer,
|  | const void * | pvTxData,
|  | size_t | xDataLengthBytes,
|  | TickType_t | xTicksToWait
| ) |  |

Here is the call graph for this function:

## xStreamBufferSendCompletedFromISR()

BaseType_t xStreamBufferSendCompletedFromISR | ( | StreamBufferHandle_t | xStreamBuffer,
|  | BaseType_t * | pxHigherPriorityTaskWoken
| ) |  |

## xStreamBufferSendFromISR()

size_t xStreamBufferSendFromISR | ( | StreamBufferHandle_t | xStreamBuffer,
|  | const void * | pvTxData,
|  | size_t | xDataLengthBytes,
|  | BaseType_t *const | pxHigherPriorityTaskWoken
| ) |  |

Here is the call graph for this function:

## xStreamBufferSetTriggerLevel()

BaseType_t xStreamBufferSetTriggerLevel | ( | StreamBufferHandle_t | xStreamBuffer,
|  | size_t | xTriggerLevel
| ) |  |

## xStreamBufferSpacesAvailable()

size_t xStreamBufferSpacesAvailable | ( | StreamBufferHandle_t | xStreamBuffer | ) |

Here is the caller graph for this function:
xTaskNotifyFromISR
#define xTaskNotifyFromISR(xTaskToNotify, ulValue, eAction, pxHigherPriorityTaskWoken)
Definition: task.h:1858
eNoAction
@ eNoAction
Definition: task.h:84
vTaskSuspendAll
void vTaskSuspendAll(void) PRIVILEGED_FUNCTION
Definition: tasks.c:2031
xTaskNotify
#define xTaskNotify(xTaskToNotify, ulValue, eAction)
Definition: task.h:1767
UBaseType_t
unsigned long UBaseType_t
Definition: portmacro.h:58
xTaskResumeAll
BaseType_t xTaskResumeAll(void) PRIVILEGED_FUNCTION
Definition: tasks.c:2104
portSET_INTERRUPT_MASK_FROM_ISR
#define portSET_INTERRUPT_MASK_FROM_ISR()
Definition: portmacro.h:109