/*\r
- FreeRTOS V8.2.1 - Copyright (C) 2015 Real Time Engineers Ltd.\r
+ FreeRTOS V8.2.3 - Copyright (C) 2015 Real Time Engineers Ltd.\r
All rights reserved\r
\r
VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.\r
\r
FreeRTOS is free software; you can redistribute it and/or modify it under\r
the terms of the GNU General Public License (version 2) as published by the\r
- Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.\r
+ Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.\r
\r
***************************************************************************\r
>>! NOTE: The modification to the GPL is included to allow you to !<<\r
xOneShotTimer = xTimerCreate( "Oneshot Timer", /* Text name to facilitate debugging. The kernel does not use this itself. */\r
tmrdemoONE_SHOT_TIMER_PERIOD, /* The period for the timer. */\r
pdFALSE, /* Don't auto-reload - hence a one shot timer. */\r
- ( void * ) 0, /* The timer identifier. In this case this is not used as the timer has its own callback. */\r
+ ( void * ) 0, /* The timer identifier. Initialise to 0, then increment each time it is called. */\r
prvOneShotTimerCallback ); /* The callback to be called when the timer expires. */\r
\r
if( xOneShotTimer == NULL )\r
\r
static void prvAutoReloadTimerCallback( TimerHandle_t pxExpiredTimer )\r
{\r
-uint32_t ulTimerID;\r
+size_t uxTimerID;\r
\r
- ulTimerID = ( uint32_t ) pvTimerGetTimerID( pxExpiredTimer );\r
- if( ulTimerID <= ( configTIMER_QUEUE_LENGTH + 1 ) )\r
+ uxTimerID = ( size_t ) pvTimerGetTimerID( pxExpiredTimer );\r
+ if( uxTimerID <= ( configTIMER_QUEUE_LENGTH + 1 ) )\r
{\r
- ( ucAutoReloadTimerCounters[ ulTimerID ] )++;\r
+ ( ucAutoReloadTimerCounters[ uxTimerID ] )++;\r
}\r
else\r
{\r
\r
static void prvOneShotTimerCallback( TimerHandle_t pxExpiredTimer )\r
{\r
- /* The parameter is not used in this case as only one timer uses this\r
- callback function. */\r
- ( void ) pxExpiredTimer;\r
+/* A count is kept of the number of times this callback function is executed.\r
+The count is stored as the timer's ID. This is only done to test the\r
+vTimerSetTimerID() function. */\r
+static size_t uxCallCount = 0;\r
+size_t uxLastCallCount;\r
+\r
+ /* Obtain the timer's ID, which should be a count of the number of times\r
+ this callback function has been executed. */\r
+ uxLastCallCount = ( size_t ) pvTimerGetTimerID( pxExpiredTimer );\r
+ configASSERT( uxLastCallCount == uxCallCount );\r
+\r
+ /* Increment the call count, then save it back as the timer's ID. This is\r
+ only done to test the vTimerSetTimerID() API function. */\r
+ uxLastCallCount++;\r
+ vTimerSetTimerID( pxExpiredTimer, ( void * ) uxLastCallCount );\r
+ uxCallCount++;\r
\r
ucOneShotTimerCounter++;\r
}\r