72 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
78 #if ( configUSE_CO_ROUTINES == 1 )
86 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
90 #define queueUNLOCKED ( ( BaseType_t ) -1 )
91 #define queueLOCKED_UNMODIFIED ( ( BaseType_t ) 0 )
104 #define pxMutexHolder pcTail
105 #define uxQueueType pcHead
106 #define queueQUEUE_IS_MUTEX NULL
110 #define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( ( UBaseType_t ) 0 )
111 #define queueMUTEX_GIVE_BLOCK_TIME ( ( TickType_t ) 0U )
113 #if( configUSE_PREEMPTION == 0 )
116 #define queueYIELD_IF_USING_PREEMPTION()
118 #define queueYIELD_IF_USING_PREEMPTION() portYIELD_WITHIN_API()
147 #if ( configUSE_TRACE_FACILITY == 1 )
152 #if ( configUSE_QUEUE_SETS == 1 )
168 #if ( configQUEUE_REGISTRY_SIZE > 0 )
173 typedef struct QUEUE_REGISTRY_ITEM
175 const char *pcQueueName;
177 } xQueueRegistryItem;
182 typedef xQueueRegistryItem QueueRegistryItem_t;
226 #if ( configUSE_QUEUE_SETS == 1 )
240 #define prvLockQueue( pxQueue ) \
241 taskENTER_CRITICAL(); \
243 if( ( pxQueue )->xRxLock == queueUNLOCKED ) \
245 ( pxQueue )->xRxLock = queueLOCKED_UNMODIFIED; \
247 if( ( pxQueue )->xTxLock == queueUNLOCKED ) \
249 ( pxQueue )->xTxLock = queueLOCKED_UNMODIFIED; \
311 size_t xQueueSizeInBytes;
316 ( void ) ucQueueType;
322 if( pxNewQueue != NULL )
326 xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ) + ( size_t ) 1;
329 if( pxNewQueue->
pcHead != NULL )
333 pxNewQueue->
uxLength = uxQueueLength;
337 #if ( configUSE_TRACE_FACILITY == 1 )
339 pxNewQueue->ucQueueType = ucQueueType;
343 #if( configUSE_QUEUE_SETS == 1 )
345 pxNewQueue->pxQueueSetContainer = NULL;
350 xReturn = pxNewQueue;
374 #if ( configUSE_MUTEXES == 1 )
382 ( void ) ucQueueType;
386 if( pxNewQueue != NULL )
389 pxNewQueue->pxMutexHolder = NULL;
406 #if ( configUSE_TRACE_FACILITY == 1 )
408 pxNewQueue->ucQueueType = ucQueueType;
412 #if ( configUSE_QUEUE_SETS == 1 )
414 pxNewQueue->pxQueueSetContainer = NULL;
439 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
469 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
523 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
564 #if ( configUSE_COUNTING_SEMAPHORES == 1 )
575 if( xHandle != NULL )
577 ( (
Queue_t * ) xHandle )->uxMessagesWaiting = uxInitialCount;
602 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )
623 prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
625 #if ( configUSE_QUEUE_SETS == 1 )
627 if( pxQueue->pxQueueSetContainer != NULL )
629 if( prvNotifyQueueSetContainer( pxQueue, xCopyPosition ) ==
pdTRUE )
711 else if( xEntryTimeSet ==
pdFALSE )
736 if( prvIsQueueFull( pxQueue ) !=
pdFALSE )
746 prvUnlockQueue( pxQueue );
761 prvUnlockQueue( pxQueue );
768 prvUnlockQueue( pxQueue );
780 #if ( configUSE_ALTERNATIVE_API == 1 )
800 prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
832 else if( xEntryTimeSet ==
pdFALSE )
845 if( prvIsQueueFull( pxQueue ) !=
pdFALSE )
870 #if ( configUSE_ALTERNATIVE_API == 1 )
876 int8_t *pcOriginalReadPosition;
891 prvCopyDataFromQueue( pxQueue, pvBuffer );
900 #if ( configUSE_MUTEXES == 1 )
968 else if( xEntryTimeSet ==
pdFALSE )
981 if( prvIsQueueEmpty( pxQueue ) !=
pdFALSE )
985 #if ( configUSE_MUTEXES == 1 )
1062 prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );
1068 #if ( configUSE_QUEUE_SETS == 1 )
1070 if( pxQueue->pxQueueSetContainer != NULL )
1072 if( prvNotifyQueueSetContainer( pxQueue, xCopyPosition ) ==
pdTRUE )
1077 if( pxHigherPriorityTaskWoken != NULL )
1079 *pxHigherPriorityTaskWoken =
pdTRUE;
1099 if( pxHigherPriorityTaskWoken != NULL )
1101 *pxHigherPriorityTaskWoken =
pdTRUE;
1127 if( pxHigherPriorityTaskWoken != NULL )
1129 *pxHigherPriorityTaskWoken =
pdTRUE;
1173 int8_t *pcOriginalReadPosition;
1178 #if ( ( INCLUDE_xTaskGetSchedulerState == 1 ) || ( configUSE_TIMERS == 1 ) )
1200 prvCopyDataFromQueue( pxQueue, pvBuffer );
1209 #if ( configUSE_MUTEXES == 1 )
1283 else if( xEntryTimeSet ==
pdFALSE )
1308 if( prvIsQueueEmpty( pxQueue ) !=
pdFALSE )
1312 #if ( configUSE_MUTEXES == 1 )
1330 prvUnlockQueue( pxQueue );
1343 prvUnlockQueue( pxQueue );
1349 prvUnlockQueue( pxQueue );
1390 prvCopyDataFromQueue( pxQueue, pvBuffer );
1405 if( pxHigherPriorityTaskWoken != NULL )
1407 *pxHigherPriorityTaskWoken =
pdTRUE;
1449 int8_t *pcOriginalReadPosition;
1481 prvCopyDataFromQueue( pxQueue, pvBuffer );
1506 uxReturn = ( (
Queue_t * ) xQueue )->uxMessagesWaiting;
1519 pxQueue = (
Queue_t * ) xQueue;
1538 uxReturn = ( (
Queue_t * ) xQueue )->uxMessagesWaiting;
1551 #if ( configQUEUE_REGISTRY_SIZE > 0 )
1556 if( pxQueue->
pcHead != NULL )
1564 #if ( configUSE_TRACE_FACILITY == 1 )
1568 return ( (
Queue_t * ) xQueue )->uxQueueNumber;
1574 #if ( configUSE_TRACE_FACILITY == 1 )
1578 ( (
Queue_t * ) xQueue )->uxQueueNumber = uxQueueNumber;
1584 #if ( configUSE_TRACE_FACILITY == 1 )
1588 return ( (
Queue_t * ) xQueue )->ucQueueType;
1594 static void prvCopyDataToQueue(
Queue_t *
const pxQueue,
const void *pvItemToQueue,
const BaseType_t xPosition )
1598 #if ( configUSE_MUTEXES == 1 )
1604 pxQueue->pxMutexHolder = NULL;
1615 ( void ) memcpy( (
void * ) pxQueue->
pcWriteTo, pvItemToQueue, ( size_t ) pxQueue->
uxItemSize );
1664 static void prvCopyDataFromQueue(
Queue_t *
const pxQueue,
void *
const pvBuffer )
1677 ( void ) memcpy( (
void * ) pvBuffer, (
void * ) pxQueue->
u.
pcReadFrom, (
size_t ) pxQueue->
uxItemSize );
1686 static void prvUnlockQueue(
Queue_t *
const pxQueue )
1701 #if ( configUSE_QUEUE_SETS == 1 )
1703 if( pxQueue->pxQueueSetContainer != NULL )
1866 if( ( (
Queue_t * ) xQueue )->uxMessagesWaiting == ( (
Queue_t * ) xQueue )->uxLength )
1879 #if ( configUSE_CO_ROUTINES == 1 )
1891 if( prvIsQueueFull( pxQueue ) !=
pdFALSE )
1956 #if ( configUSE_CO_ROUTINES == 1 )
2008 ( void ) memcpy( (
void * ) pvBuffer, (
void * ) pxQueue->
u.
pcReadFrom, (
unsigned ) pxQueue->
uxItemSize );
2046 #if ( configUSE_CO_ROUTINES == 1 )
2060 if( xCoRoutinePreviouslyWoken ==
pdFALSE )
2088 return xCoRoutinePreviouslyWoken;
2094 #if ( configUSE_CO_ROUTINES == 1 )
2116 ( void ) memcpy( (
void * ) pvBuffer, (
void * ) pxQueue->
u.
pcReadFrom, (
unsigned ) pxQueue->
uxItemSize );
2118 if( ( *pxCoRoutineWoken ) ==
pdFALSE )
2124 *pxCoRoutineWoken =
pdTRUE;
2154 #if ( configQUEUE_REGISTRY_SIZE > 0 )
2164 if( xQueueRegistry[ ux ].pcQueueName == NULL )
2167 xQueueRegistry[ ux ].pcQueueName = pcQueueName;
2168 xQueueRegistry[ ux ].xHandle = xQueue;
2183 #if ( configQUEUE_REGISTRY_SIZE > 0 )
2193 if( xQueueRegistry[ ux ].xHandle == xQueue )
2196 xQueueRegistry[ ux ].pcQueueName = NULL;
2210 #if ( configUSE_TIMERS == 1 )
2240 prvUnlockQueue( pxQueue );
2246 #if ( configUSE_QUEUE_SETS == 1 )
2260 #if ( configUSE_QUEUE_SETS == 1 )
2268 if( ( (
Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer != NULL )
2273 else if( ( (
Queue_t * ) xQueueOrSemaphore )->uxMessagesWaiting != (
UBaseType_t ) 0 )
2281 ( (
Queue_t * ) xQueueOrSemaphore )->pxQueueSetContainer = xQueueSet;
2293 #if ( configUSE_QUEUE_SETS == 1 )
2298 Queue_t *
const pxQueueOrSemaphore = (
Queue_t * ) xQueueOrSemaphore;
2300 if( pxQueueOrSemaphore->pxQueueSetContainer != xQueueSet )
2317 pxQueueOrSemaphore->pxQueueSetContainer = NULL;
2329 #if ( configUSE_QUEUE_SETS == 1 )
2342 #if ( configUSE_QUEUE_SETS == 1 )
2355 #if ( configUSE_QUEUE_SETS == 1 )
2359 Queue_t *pxQueueSetContainer = pxQueue->pxQueueSetContainer;
2371 prvCopyDataToQueue( pxQueueSetContainer, &pxQueue, xCopyPosition );
BaseType_t xQueueAddToSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
UBaseType_t uxQueueMessagesWaitingFromISR(const QueueHandle_t xQueue)
void vPortFree(void *pv) PRIVILEGED_FUNCTION
#define queueQUEUE_TYPE_SET
#define traceTAKE_MUTEX_RECURSIVE_FAILED(pxMutex)
BaseType_t xQueueTakeMutexRecursive(QueueHandle_t xMutex, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
BaseType_t xQueueCRSendFromISR(QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken)
#define traceQUEUE_CREATE_FAILED(ucQueueType)
#define traceQUEUE_SEND_FROM_ISR(pxQueue)
UBaseType_t uxRecursiveCallCount
void * QueueSetMemberHandle_t
#define queueYIELD_IF_USING_PREEMPTION()
void vQueueSetQueueNumber(QueueHandle_t xQueue, UBaseType_t uxQueueNumber) PRIVILEGED_FUNCTION
TaskHandle_t xTaskGetCurrentTaskHandle(void) PRIVILEGED_FUNCTION
#define mtCOVERAGE_TEST_MARKER()
UBaseType_t uxQueueMessagesWaiting(const QueueHandle_t xQueue)
#define queueQUEUE_TYPE_COUNTING_SEMAPHORE
#define queueLOCKED_UNMODIFIED
#define taskEXIT_CRITICAL()
List_t xTasksWaitingToReceive
void vTaskSuspendAll(void) PRIVILEGED_FUNCTION
#define vQueueAddToRegistry(xQueue, pcName)
#define traceQUEUE_RECEIVE_FROM_ISR_FAILED(pxQueue)
#define traceQUEUE_RECEIVE_FAILED(pxQueue)
#define portENABLE_INTERRUPTS()
#define queueSEMAPHORE_QUEUE_ITEM_LENGTH
void vTaskPlaceOnEventListRestricted(List_t *const pxEventList, const TickType_t xTicksToWait) PRIVILEGED_FUNCTION
void * xQueueGetMutexHolder(QueueHandle_t xSemaphore) PRIVILEGED_FUNCTION
#define portDISABLE_INTERRUPTS()
#define traceQUEUE_RECEIVE(pxQueue)
void * pvPortMalloc(size_t xSize) PRIVILEGED_FUNCTION
#define portCLEAR_INTERRUPT_MASK_FROM_ISR(uxSavedStatusValue)
#define portYIELD_WITHIN_API
QueueSetHandle_t xQueueCreateSet(const UBaseType_t uxEventQueueLength) PRIVILEGED_FUNCTION
volatile BaseType_t xTxLock
#define listLIST_IS_EMPTY(pxList)
BaseType_t xCoRoutineRemoveFromEventList(const List_t *pxEventList)
#define traceQUEUE_PEEK_FROM_ISR_FAILED(pxQueue)
unsigned long UBaseType_t
#define queueSEND_TO_BACK
struct QueueDefinition xQUEUE
BaseType_t xQueueGenericReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait, const BaseType_t xJustPeeking)
#define portSET_INTERRUPT_MASK_FROM_ISR()
#define traceQUEUE_SEND_FROM_ISR_FAILED(pxQueue)
QueueSetMemberHandle_t xQueueSelectFromSet(QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait) PRIVILEGED_FUNCTION
BaseType_t xQueuePeekFromISR(QueueHandle_t xQueue, void *const pvBuffer)
#define traceGIVE_MUTEX_RECURSIVE_FAILED(pxMutex)
#define vQueueUnregisterQueue(xQueue)
QueueSetMemberHandle_t xQueueSelectFromSetFromISR(QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
BaseType_t xQueueIsQueueFullFromISR(const QueueHandle_t xQueue)
#define traceCREATE_MUTEX(pxNewQueue)
#define traceQUEUE_CREATE(pxNewQueue)
void vTaskPriorityDisinherit(TaskHandle_t const pxMutexHolder) PRIVILEGED_FUNCTION
#define traceGIVE_MUTEX_RECURSIVE(pxMutex)
union QueueDefinition::@0 u
BaseType_t xQueueAltGenericReceive(QueueHandle_t xQueue, void *const pvBuffer, TickType_t xTicksToWait, BaseType_t xJustPeeking)
BaseType_t xQueueReceiveFromISR(QueueHandle_t xQueue, void *const pvBuffer, BaseType_t *const pxHigherPriorityTaskWoken)
#define traceQUEUE_DELETE(pxQueue)
#define traceQUEUE_REGISTRY_ADD(xQueue, pcQueueName)
void vTaskMissedYield(void) PRIVILEGED_FUNCTION
BaseType_t xQueueGiveMutexRecursive(QueueHandle_t pxMutex) PRIVILEGED_FUNCTION
UBaseType_t uxQueueGetQueueNumber(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
QueueHandle_t xQueueGenericCreate(const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType)
#define traceQUEUE_SEND(pxQueue)
BaseType_t xQueueCRReceiveFromISR(QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken)
uint8_t ucQueueGetQueueType(QueueHandle_t xQueue) PRIVILEGED_FUNCTION
#define traceQUEUE_SEND_FAILED(pxQueue)
void vTaskPriorityInherit(TaskHandle_t const pxMutexHolder) PRIVILEGED_FUNCTION
#define traceBLOCKING_ON_QUEUE_SEND(pxQueue)
BaseType_t xQueueGenericReset(QueueHandle_t xQueue, BaseType_t xNewQueue)
void vQueueWaitForMessageRestricted(QueueHandle_t xQueue, TickType_t xTicksToWait) PRIVILEGED_FUNCTION
#define traceCREATE_COUNTING_SEMAPHORE()
BaseType_t xQueueAltGenericSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, BaseType_t xCopyPosition)
#define traceTAKE_MUTEX_RECURSIVE(pxMutex)
BaseType_t xTaskResumeAll(void) PRIVILEGED_FUNCTION
volatile UBaseType_t uxMessagesWaiting
BaseType_t xTaskGetSchedulerState(void) PRIVILEGED_FUNCTION
#define taskENTER_CRITICAL()
BaseType_t xQueueGenericSendFromISR(QueueHandle_t xQueue, const void *const pvItemToQueue, BaseType_t *const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)
#define traceQUEUE_PEEK_FROM_ISR(pxQueue)
#define traceQUEUE_PEEK(pxQueue)
BaseType_t xQueueCRSend(QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait)
void vTaskSetTimeOutState(TimeOut_t *const pxTimeOut) PRIVILEGED_FUNCTION
QueueHandle_t xQueueCreateMutex(const uint8_t ucQueueType) PRIVILEGED_FUNCTION
#define queueQUEUE_IS_MUTEX
#define configQUEUE_REGISTRY_SIZE
List_t xTasksWaitingToSend
void vCoRoutineAddToDelayedList(TickType_t xTicksToDelay, List_t *pxEventList)
BaseType_t xQueueRemoveFromSet(QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet) PRIVILEGED_FUNCTION
BaseType_t xQueueIsQueueEmptyFromISR(const QueueHandle_t xQueue)
#define PRIVILEGED_FUNCTION
#define traceCREATE_COUNTING_SEMAPHORE_FAILED()
#define traceCREATE_MUTEX_FAILED()
#define queueMUTEX_GIVE_BLOCK_TIME
#define prvLockQueue(pxQueue)
BaseType_t xTaskCheckForTimeOut(TimeOut_t *const pxTimeOut, TickType_t *const pxTicksToWait) PRIVILEGED_FUNCTION
#define taskSCHEDULER_SUSPENDED
void vQueueDelete(QueueHandle_t xQueue)
#define portASSERT_IF_INTERRUPT_PRIORITY_INVALID()
void vListInitialise(List_t *const pxList)
BaseType_t xQueueCRReceive(QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait)
BaseType_t xQueueGenericSend(QueueHandle_t xQueue, const void *const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)
BaseType_t xTaskRemoveFromEventList(const List_t *const pxEventList) PRIVILEGED_FUNCTION
void vTaskPlaceOnEventList(List_t *const pxEventList, const TickType_t xTicksToWait) PRIVILEGED_FUNCTION
QueueHandle_t xQueueCreateCountingSemaphore(const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount) PRIVILEGED_FUNCTION
#define traceBLOCKING_ON_QUEUE_RECEIVE(pxQueue)
#define traceQUEUE_RECEIVE_FROM_ISR(pxQueue)
UBaseType_t uxQueueSpacesAvailable(const QueueHandle_t xQueue)
volatile BaseType_t xRxLock