STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
queue.c File Reference
#include <stdlib.h>
#include <string.h>
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
Include dependency graph for queue.c:

Go to the source code of this file.

Classes

struct  QueuePointers
struct  SemaphoreData
struct  QueueDefinition

Macros

#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
#define queueUNLOCKED   ( ( int8_t ) -1 )
#define queueLOCKED_UNMODIFIED   ( ( int8_t ) 0 )
#define queueINT8_MAX   ( ( int8_t ) 127 )
#define uxQueueType   pcHead
#define queueQUEUE_IS_MUTEX   NULL
#define queueSEMAPHORE_QUEUE_ITEM_LENGTH   ( ( UBaseType_t ) 0 )
#define queueMUTEX_GIVE_BLOCK_TIME   ( ( TickType_t ) 0U )
#define queueYIELD_IF_USING_PREEMPTION()
#define prvLockQueue(pxQueue)
#define prvIncrementQueueTxLock(pxQueue, cTxLock)
#define prvIncrementQueueRxLock(pxQueue, cRxLock)

Typedefs

typedef struct QueuePointers QueuePointers_t
typedef struct SemaphoreData SemaphoreData_t
typedef struct QueueDefinition xQUEUE
typedef xQUEUE Queue_t

Functions

static void prvUnlockQueue (Queue_t *const pxQueue) PRIVILEGED_FUNCTION
static BaseType_t prvIsQueueEmpty (const Queue_t *pxQueue) PRIVILEGED_FUNCTION
static BaseType_t prvIsQueueFull (const Queue_t *pxQueue) PRIVILEGED_FUNCTION
static BaseType_t prvCopyDataToQueue (Queue_t *const pxQueue, const void *pvItemToQueue, const BaseType_t xPosition) PRIVILEGED_FUNCTION
static void prvCopyDataFromQueue (Queue_t *const pxQueue, void *const pvBuffer) PRIVILEGED_FUNCTION
static void prvInitialiseNewQueue (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t *pucQueueStorage, const uint8_t ucQueueType, Queue_t *pxNewQueue) PRIVILEGED_FUNCTION
BaseType_t xQueueGenericReset (QueueHandle_t xQueue, BaseType_t xNewQueue)
BaseType_t xQueueGenericSend (QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)
BaseType_t xQueueGenericSendFromISR (QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)
BaseType_t xQueueGiveFromISR (QueueHandle_t xQueue, BaseType_t *const pxHigherPriorityTaskWoken)
BaseType_t xQueueReceive (QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait)
BaseType_t xQueueSemaphoreTake (QueueHandle_t xQueue, TickType_t xTicksToWait)
BaseType_t xQueuePeek (QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait)
BaseType_t xQueueReceiveFromISR (QueueHandle_t xQueue, void *const pvBuffer, BaseType_t *const pxHigherPriorityTaskWoken)
BaseType_t xQueuePeekFromISR (QueueHandle_t xQueue, void *const pvBuffer)
UBaseType_t uxQueueMessagesWaiting (const QueueHandle_t xQueue)
UBaseType_t uxQueueSpacesAvailable (const QueueHandle_t xQueue)
UBaseType_t uxQueueMessagesWaitingFromISR (const QueueHandle_t xQueue)
void vQueueDelete (QueueHandle_t xQueue)
UBaseType_t uxQueueGetQueueItemSize (QueueHandle_t xQueue)
UBaseType_t uxQueueGetQueueLength (QueueHandle_t xQueue)
BaseType_t xQueueIsQueueEmptyFromISR (const QueueHandle_t xQueue)
BaseType_t xQueueIsQueueFullFromISR (const QueueHandle_t xQueue)

Macro Definition Documentation

◆ MPU_WRAPPERS_INCLUDED_FROM_API_FILE

#define MPU_WRAPPERS_INCLUDED_FROM_API_FILE

Definition at line 35 of file queue.c.

◆ prvIncrementQueueRxLock

#define prvIncrementQueueRxLock ( pxQueue,
cRxLock )
Value:
do { \
const UBaseType_t uxNumberOfTasks = uxTaskGetNumberOfTasks(); \
if( ( UBaseType_t ) ( cRxLock ) < uxNumberOfTasks ) \
{ \
configASSERT( ( cRxLock ) != queueINT8_MAX ); \
( pxQueue )->cRxLock = ( int8_t ) ( ( cRxLock ) + ( int8_t ) 1 ); \
} \
} while( 0 )
unsigned long UBaseType_t
Definition portmacro.h:60
#define queueINT8_MAX
Definition queue.c:55
UBaseType_t uxTaskGetNumberOfTasks(void) PRIVILEGED_FUNCTION
Definition tasks.c:2345

Definition at line 285 of file queue.c.

Referenced by xQueueReceiveFromISR().

◆ prvIncrementQueueTxLock

#define prvIncrementQueueTxLock ( pxQueue,
cTxLock )
Value:
do { \
const UBaseType_t uxNumberOfTasks = uxTaskGetNumberOfTasks(); \
if( ( UBaseType_t ) ( cTxLock ) < uxNumberOfTasks ) \
{ \
configASSERT( ( cTxLock ) != queueINT8_MAX ); \
( pxQueue )->cTxLock = ( int8_t ) ( ( cTxLock ) + ( int8_t ) 1 ); \
} \
} while( 0 )

Definition at line 270 of file queue.c.

Referenced by xQueueGenericSendFromISR(), and xQueueGiveFromISR().

◆ prvLockQueue

#define prvLockQueue ( pxQueue)
Value:
{ \
if( ( pxQueue )->cRxLock == queueUNLOCKED ) \
{ \
( pxQueue )->cRxLock = queueLOCKED_UNMODIFIED; \
} \
if( ( pxQueue )->cTxLock == queueUNLOCKED ) \
{ \
( pxQueue )->cTxLock = queueLOCKED_UNMODIFIED; \
} \
} \
taskEXIT_CRITICAL()
#define queueLOCKED_UNMODIFIED
Definition queue.c:54
#define queueUNLOCKED
Definition queue.c:53
#define taskENTER_CRITICAL()
Definition task.h:215

Definition at line 251 of file queue.c.

Referenced by xQueueGenericSend(), xQueuePeek(), xQueueReceive(), and xQueueSemaphoreTake().

◆ queueINT8_MAX

#define queueINT8_MAX   ( ( int8_t ) 127 )

Definition at line 55 of file queue.c.

◆ queueLOCKED_UNMODIFIED

#define queueLOCKED_UNMODIFIED   ( ( int8_t ) 0 )

Definition at line 54 of file queue.c.

Referenced by prvUnlockQueue().

◆ queueMUTEX_GIVE_BLOCK_TIME

#define queueMUTEX_GIVE_BLOCK_TIME   ( ( TickType_t ) 0U )

Definition at line 84 of file queue.c.

◆ queueQUEUE_IS_MUTEX

#define queueQUEUE_IS_MUTEX   NULL

Definition at line 67 of file queue.c.

Referenced by prvCopyDataToQueue(), xQueueGiveFromISR(), and xQueueSemaphoreTake().

◆ queueSEMAPHORE_QUEUE_ITEM_LENGTH

#define queueSEMAPHORE_QUEUE_ITEM_LENGTH   ( ( UBaseType_t ) 0 )

Definition at line 83 of file queue.c.

◆ queueUNLOCKED

#define queueUNLOCKED   ( ( int8_t ) -1 )

◆ queueYIELD_IF_USING_PREEMPTION

#define queueYIELD_IF_USING_PREEMPTION ( )

◆ uxQueueType

#define uxQueueType   pcHead

Definition at line 66 of file queue.c.

Typedef Documentation

◆ Queue_t

typedef xQUEUE Queue_t

Definition at line 137 of file queue.c.

◆ QueuePointers_t

◆ SemaphoreData_t

◆ xQUEUE

typedef struct QueueDefinition xQUEUE

Function Documentation

◆ prvCopyDataFromQueue()

◆ prvCopyDataToQueue()

◆ prvInitialiseNewQueue()

void prvInitialiseNewQueue ( const UBaseType_t uxQueueLength,
const UBaseType_t uxItemSize,
uint8_t * pucQueueStorage,
const uint8_t ucQueueType,
Queue_t * pxNewQueue )
static

◆ prvIsQueueEmpty()

BaseType_t prvIsQueueEmpty ( const Queue_t * pxQueue)
static

◆ prvIsQueueFull()

BaseType_t prvIsQueueFull ( const Queue_t * pxQueue)
static

◆ prvUnlockQueue()

◆ uxQueueGetQueueItemSize()

UBaseType_t uxQueueGetQueueItemSize ( QueueHandle_t xQueue)

Definition at line 2197 of file queue.c.

◆ uxQueueGetQueueLength()

UBaseType_t uxQueueGetQueueLength ( QueueHandle_t xQueue)

Definition at line 2203 of file queue.c.

◆ uxQueueMessagesWaiting()

UBaseType_t uxQueueMessagesWaiting ( const QueueHandle_t xQueue)

Definition at line 2079 of file queue.c.

References configASSERT, taskENTER_CRITICAL, and taskEXIT_CRITICAL.

Referenced by osMessageQueueGetCount().

◆ uxQueueMessagesWaitingFromISR()

UBaseType_t uxQueueMessagesWaitingFromISR ( const QueueHandle_t xQueue)

Definition at line 2112 of file queue.c.

References configASSERT, and QueueDefinition::uxMessagesWaiting.

Referenced by osMessageQueueGetCount().

◆ uxQueueSpacesAvailable()

UBaseType_t uxQueueSpacesAvailable ( const QueueHandle_t xQueue)

◆ vQueueDelete()

void vQueueDelete ( QueueHandle_t xQueue)

◆ xQueueGenericReset()

◆ xQueueGenericSend()

◆ xQueueGenericSendFromISR()

◆ xQueueGiveFromISR()

◆ xQueueIsQueueEmptyFromISR()

BaseType_t xQueueIsQueueEmptyFromISR ( const QueueHandle_t xQueue)

Definition at line 2481 of file queue.c.

References configASSERT, pdFALSE, pdTRUE, and QueueDefinition::uxMessagesWaiting.

◆ xQueueIsQueueFullFromISR()

BaseType_t xQueueIsQueueFullFromISR ( const QueueHandle_t xQueue)

◆ xQueuePeek()

◆ xQueuePeekFromISR()

◆ xQueueReceive()

◆ xQueueReceiveFromISR()

◆ xQueueSemaphoreTake()