signed portBASE_TYPE MPU_xQueuePeekFromISR( xQueueHandle pxQueue, void * const pvBuffer ) { portBASE_TYPE xRunningPrivileged = prvRaisePrivilege(); signed portBASE_TYPE xReturn; xReturn = xQueuePeekFromISR( pxQueue, pvBuffer ); portRESET_PRIVILEGE( xRunningPrivileged ); return xReturn; }
BaseType_t MPU_xQueuePeekFromISR( QueueHandle_t pxQueue, void * const pvBuffer ) { BaseType_t xRunningPrivileged = prvRaisePrivilege(); BaseType_t xReturn; xReturn = xQueuePeekFromISR( pxQueue, pvBuffer ); portRESET_PRIVILEGE( xRunningPrivileged ); return xReturn; }
BaseType_t MPU_xQueuePeekFromISR( QueueHandle_t pxQueue, void * const pvBuffer ) { BaseType_t xRunningPrivileged = xPortRaisePrivilege(); BaseType_t xReturn; xReturn = xQueuePeekFromISR( pxQueue, pvBuffer ); vPortResetPrivilege( xRunningPrivileged ); return xReturn; }
void vQueueOverwritePeriodicISRDemo( void ) { static uint32_t ulCallCount = 0; const uint32_t ulTx1 = 10UL, ulTx2 = 20UL, ulNumberOfSwitchCases = 3UL; uint32_t ulRx; /* This function should be called from an interrupt, such as the tick hook function vApplicationTickHook(). */ configASSERT( xISRQueue ); switch( ulCallCount ) { case 0: /* The queue is empty. Write ulTx1 to the queue. In this demo the last parameter is not used because there are no tasks blocked on this queue. */ xQueueOverwriteFromISR( xISRQueue, &ulTx1, NULL ); /* Peek the queue to check it holds the expected value. */ xQueuePeekFromISR( xISRQueue, &ulRx ); if( ulRx != ulTx1 ) { xISRTestStatus = pdFAIL; } break; case 1: /* The queue already holds ulTx1. Overwrite the value in the queue with ulTx2. */ xQueueOverwriteFromISR( xISRQueue, &ulTx2, NULL ); break; case 2: /* Read from the queue to empty the queue again. The value read should be ulTx2. */ xQueueReceiveFromISR( xISRQueue, &ulRx, NULL ); if( ulRx != ulTx2 ) { xISRTestStatus = pdFAIL; } break; } /* Run the next case in the switch statement above next time this function is called. */ ulCallCount++; if( ulCallCount >= ulNumberOfSwitchCases ) { /* Go back to the start. */ ulCallCount = 0; } }
AJ_Status AJ_QueuePeekFromISR(struct AJ_Queue* q, void* data) { uint8_t ret; if (q && q->q) { ret = xQueuePeekFromISR(q->q, data); if (ret) { return AJ_OK; } } return AJ_ERR_NULL; }