+ BaseType_t xQueueOverwriteFromISR(\r
+ QueueHandle_t xQueue,\r
+ const void * pvItemToQueue,\r
+ BaseType_t *pxHigherPriorityTaskWoken\r
+ );\r
+ * </pre>\r
+ *\r
+ * A version of xQueueOverwrite() that can be used in an interrupt service\r
+ * routine (ISR).\r
+ *\r
+ * Only for use with queues that can hold a single item - so the queue is either\r
+ * empty or full.\r
+ *\r
+ * Post an item on a queue. If the queue is already full then overwrite the\r
+ * value held in the queue. The item is queued by copy, not by reference.\r
+ *\r
+ * @param xQueue The handle to the queue on which the item is to be posted.\r
+ *\r
+ * @param pvItemToQueue A pointer to the item that is to be placed on the\r
+ * queue. The size of the items the queue will hold was defined when the\r
+ * queue was created, so this many bytes will be copied from pvItemToQueue\r
+ * into the queue storage area.\r
+ *\r
+ * @param pxHigherPriorityTaskWoken xQueueOverwriteFromISR() will set\r
+ * *pxHigherPriorityTaskWoken to pdTRUE if sending to the queue caused a task\r
+ * to unblock, and the unblocked task has a priority higher than the currently\r
+ * running task. If xQueueOverwriteFromISR() sets this value to pdTRUE then\r
+ * a context switch should be requested before the interrupt is exited.\r
+ *\r
+ * @return xQueueOverwriteFromISR() is a macro that calls\r
+ * xQueueGenericSendFromISR(), and therefore has the same return values as\r
+ * xQueueSendToFrontFromISR(). However, pdPASS is the only value that can be\r
+ * returned because xQueueOverwriteFromISR() will write to the queue even when\r
+ * the queue is already full.\r
+ *\r
+ * Example usage:\r
+ <pre>\r
+\r
+ QueueHandle_t xQueue;\r
+\r
+ void vFunction( void *pvParameters )\r
+ {\r
+ // Create a queue to hold one uint32_t value. It is strongly\r
+ // recommended *not* to use xQueueOverwriteFromISR() on queues that can\r
+ // contain more than one value, and doing so will trigger an assertion\r
+ // if configASSERT() is defined.\r
+ xQueue = xQueueCreate( 1, sizeof( uint32_t ) );\r
+}\r
+\r
+void vAnInterruptHandler( void )\r
+{\r
+// xHigherPriorityTaskWoken must be set to pdFALSE before it is used.\r
+BaseType_t xHigherPriorityTaskWoken = pdFALSE;\r
+uint32_t ulVarToSend, ulValReceived;\r
+\r
+ // Write the value 10 to the queue using xQueueOverwriteFromISR().\r
+ ulVarToSend = 10;\r
+ xQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );\r
+\r
+ // The queue is full, but calling xQueueOverwriteFromISR() again will still\r
+ // pass because the value held in the queue will be overwritten with the\r
+ // new value.\r
+ ulVarToSend = 100;\r
+ xQueueOverwriteFromISR( xQueue, &ulVarToSend, &xHigherPriorityTaskWoken );\r
+\r
+ // Reading from the queue will now return 100.\r
+\r
+ // ...\r
+\r
+ if( xHigherPrioritytaskWoken == pdTRUE )\r
+ {\r
+ // Writing to the queue caused a task to unblock and the unblocked task\r
+ // has a priority higher than or equal to the priority of the currently\r
+ // executing task (the task this interrupt interrupted). Perform a context\r
+ // switch so this interrupt returns directly to the unblocked task.\r
+ portYIELD_FROM_ISR(); // or portEND_SWITCHING_ISR() depending on the port.\r
+ }\r
+}\r
+ </pre>\r
+ * \defgroup xQueueOverwriteFromISR xQueueOverwriteFromISR\r
+ * \ingroup QueueManagement\r
+ */\r
+#define xQueueOverwriteFromISR( xQueue, pvItemToQueue, pxHigherPriorityTaskWoken ) xQueueGenericSendFromISR( ( xQueue ), ( pvItemToQueue ), ( pxHigherPriorityTaskWoken ), queueOVERWRITE )\r
+\r
+/**\r
+ * queue. h\r
+ * <pre>\r
+ BaseType_t xQueueSendFromISR(\r
+ QueueHandle_t xQueue,\r