+#define xTimerResetFromISR( xTimer, pxHigherPriorityTaskWoken ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_RESET_FROM_ISR, ( xTaskGetTickCountFromISR() ), ( pxHigherPriorityTaskWoken ), 0U )\r
+\r
+\r
+/**\r
+ * BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend,\r
+ * void *pvParameter1,\r
+ * uint32_t ulParameter2,\r
+ * BaseType_t *pxHigherPriorityTaskWoken );\r
+ *\r
+ *\r
+ * Used from application interrupt service routines to defer the execution of a\r
+ * function to the RTOS daemon task (the timer service task, hence this function\r
+ * is implemented in timers.c and is prefixed with 'Timer').\r
+ *\r
+ * Ideally an interrupt service routine (ISR) is kept as short as possible, but\r
+ * sometimes an ISR either has a lot of processing to do, or needs to perform\r
+ * processing that is not deterministic. In these cases\r
+ * xTimerPendFunctionCallFromISR() can be used to defer processing of a function\r
+ * to the RTOS daemon task.\r
+ *\r
+ * A mechanism is provided that allows the interrupt to return directly to the\r
+ * task that will subsequently execute the pended callback function. This\r
+ * allows the callback function to execute contiguously in time with the\r
+ * interrupt - just as if the callback had executed in the interrupt itself.\r
+ *\r
+ * @param xFunctionToPend The function to execute from the timer service/\r
+ * daemon task. The function must conform to the PendedFunction_t\r
+ * prototype.\r
+ *\r
+ * @param pvParameter1 The value of the callback function's first parameter.\r
+ * The parameter has a void * type to allow it to be used to pass any type.\r
+ * For example, unsigned longs can be cast to a void *, or the void * can be\r
+ * used to point to a structure.\r
+ *\r
+ * @param ulParameter2 The value of the callback function's second parameter.\r
+ *\r
+ * @param pxHigherPriorityTaskWoken As mentioned above, calling this function\r
+ * will result in a message being sent to the timer daemon task. If the\r
+ * priority of the timer daemon task (which is set using\r
+ * configTIMER_TASK_PRIORITY in FreeRTOSConfig.h) is higher than the priority of\r
+ * the currently running task (the task the interrupt interrupted) then\r
+ * *pxHigherPriorityTaskWoken will be set to pdTRUE within\r
+ * xTimerPendFunctionCallFromISR(), indicating that a context switch should be\r
+ * requested before the interrupt exits. For that reason\r
+ * *pxHigherPriorityTaskWoken must be initialised to pdFALSE. See the\r
+ * example code below.\r
+ *\r
+ * @return pdPASS is returned if the message was successfully sent to the\r
+ * timer daemon task, otherwise pdFALSE is returned.\r
+ *\r
+ * Example usage:\r
+ * @verbatim\r
+ *\r
+ * // The callback function that will execute in the context of the daemon task.\r
+ * // Note callback functions must all use this same prototype.\r
+ * void vProcessInterface( void *pvParameter1, uint32_t ulParameter2 )\r
+ * {\r
+ * BaseType_t xInterfaceToService;\r
+ *\r
+ * // The interface that requires servicing is passed in the second\r
+ * // parameter. The first parameter is not used in this case.\r
+ * xInterfaceToService = ( BaseType_t ) ulParameter2;\r
+ *\r
+ * // ...Perform the processing here...\r
+ * }\r
+ *\r
+ * // An ISR that receives data packets from multiple interfaces\r
+ * void vAnISR( void )\r
+ * {\r
+ * BaseType_t xInterfaceToService, xHigherPriorityTaskWoken;\r
+ *\r
+ * // Query the hardware to determine which interface needs processing.\r
+ * xInterfaceToService = prvCheckInterfaces();\r
+ *\r
+ * // The actual processing is to be deferred to a task. Request the\r
+ * // vProcessInterface() callback function is executed, passing in the\r
+ * // number of the interface that needs processing. The interface to\r
+ * // service is passed in the second parameter. The first parameter is\r
+ * // not used in this case.\r
+ * xHigherPriorityTaskWoken = pdFALSE;\r
+ * xTimerPendFunctionCallFromISR( vProcessInterface, NULL, ( uint32_t ) xInterfaceToService, &xHigherPriorityTaskWoken );\r
+ *\r
+ * // If xHigherPriorityTaskWoken is now set to pdTRUE then a context\r
+ * // switch should be requested. The macro used is port specific and will\r
+ * // be either portYIELD_FROM_ISR() or portEND_SWITCHING_ISR() - refer to\r
+ * // the documentation page for the port being used.\r
+ * portYIELD_FROM_ISR( xHigherPriorityTaskWoken );\r
+ *\r
+ * }\r
+ * @endverbatim\r
+ */\r
+BaseType_t xTimerPendFunctionCallFromISR( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, BaseType_t *pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;\r
+\r
+ /**\r
+ * BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend,\r
+ * void *pvParameter1,\r
+ * uint32_t ulParameter2,\r
+ * TickType_t xTicksToWait );\r
+ *\r
+ *\r
+ * Used to defer the execution of a function to the RTOS daemon task (the timer\r
+ * service task, hence this function is implemented in timers.c and is prefixed\r
+ * with 'Timer').\r
+ *\r
+ * @param xFunctionToPend The function to execute from the timer service/\r
+ * daemon task. The function must conform to the PendedFunction_t\r
+ * prototype.\r
+ *\r
+ * @param pvParameter1 The value of the callback function's first parameter.\r
+ * The parameter has a void * type to allow it to be used to pass any type.\r
+ * For example, unsigned longs can be cast to a void *, or the void * can be\r
+ * used to point to a structure.\r
+ *\r
+ * @param ulParameter2 The value of the callback function's second parameter.\r
+ *\r
+ * @param xTicksToWait Calling this function will result in a message being\r
+ * sent to the timer daemon task on a queue. xTicksToWait is the amount of\r
+ * time the calling task should remain in the Blocked state (so not using any\r
+ * processing time) for space to become available on the timer queue if the\r
+ * queue is found to be full.\r
+ *\r
+ * @return pdPASS is returned if the message was successfully sent to the\r
+ * timer daemon task, otherwise pdFALSE is returned.\r
+ *\r
+ */\r
+BaseType_t xTimerPendFunctionCall( PendedFunction_t xFunctionToPend, void *pvParameter1, uint32_t ulParameter2, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;\r
+\r
+/**\r
+ * const char * const pcTimerGetName( TimerHandle_t xTimer );\r
+ *\r
+ * Returns the name that was assigned to a timer when the timer was created.\r
+ *\r
+ * @param xTimer The handle of the timer being queried.\r
+ *\r
+ * @return The name assigned to the timer specified by the xTimer parameter.\r
+ */\r
+const char * pcTimerGetName( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION; /*lint !e971 Unqualified char types are allowed for strings and single characters only. */\r
+\r
+/**\r
+ * TickType_t xTimerGetPeriod( TimerHandle_t xTimer );\r
+ *\r
+ * Returns the period of a timer.\r
+ *\r
+ * @param xTimer The handle of the timer being queried.\r
+ *\r
+ * @return The period of the timer in ticks.\r
+ */\r
+TickType_t xTimerGetPeriod( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\r
+\r
+/**\r
+* TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer );\r
+*\r
+* Returns the time in ticks at which the timer will expire. If this is less\r
+* than the current tick count then the expiry time has overflowed from the\r
+* current time.\r
+*\r
+* @param xTimer The handle of the timer being queried.\r
+*\r
+* @return If the timer is running then the time in ticks at which the timer\r
+* will next expire is returned. If the timer is not running then the return\r
+* value is undefined.\r
+*/\r
+TickType_t xTimerGetExpiryTime( TimerHandle_t xTimer ) PRIVILEGED_FUNCTION;\r