BaseType_t xQueueSendToFrontFromISR
(
QueueHandle_t xQueue,
const void *pvItemToQueue,
BaseType_t *pxHigherPriorityTaskWoken
);
This is a macro that calls xQueueGenericSendFromISR().
Post an item to the front of a queue. It is safe to use this function from within an interrupt service routine.
Items are queued by copy not reference so it is preferable to either only send small items, or alternatively send a pointer to the item.
void vBufferISR( void )
{
char cIn;
BaseType_t xHigherPriorityTaskWoken;
/* We have not woken a task at the start of the ISR. */
xHigherPriorityTaskWoken = pdFALSE;
/* Obtain a byte from the buffer. */
cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );
if( cIn == EMERGENCY_MESSAGE )
{
/* Post the byte to the front of the queue. */
xQueueSendToFrontFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
}
else
{
/* Post the byte to the back of the queue. */
xQueueSendToBackFromISR( xRxQueue, &cIn, &xHigherPriorityTaskWoken );
}
/* Did sending to the queue unblock a higher priority task? */
if( xHigherPriorityTaskWoken )
{
/* Actual macro used here is port specific. */
taskYIELD_FROM_ISR ();
}
}
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.