]> git.sur5r.net Git - freertos/commitdiff
Make self monitoring in QueueSet.c more robust to prevent false positives.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 10 Sep 2013 13:09:14 +0000 (13:09 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 10 Sep 2013 13:09:14 +0000 (13:09 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2038 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Demo/Common/Minimal/QueueSet.c

index 3d5b34c1fa03cc69d35a9bacf7f4a850898c4996..b1c40c173082c21952053d66ba6195f4a369f4fa 100644 (file)
@@ -75,6 +75,7 @@
  * queuesetINITIAL_ISR_TX_VALUE to ULONG_MAX.\r
  */\r
 \r
+\r
 /* Standard includes. */\r
 #include <stdlib.h>\r
 #include <limits.h>\r
@@ -105,7 +106,6 @@ in the range of 0xffff to ULONG_MAX. */
 /* The priorities used in this demo. */\r
 #define queuesetLOW_PRIORITY   ( tskIDLE_PRIORITY )\r
 #define queuesetMEDIUM_PRIORITY ( queuesetLOW_PRIORITY + 1 )\r
-#define queuesetHIGH_PRIORITY  ( queuesetMEDIUM_PRIORITY + 1 )\r
 \r
 /* For test purposes the priority of the sending task is changed after every\r
 queuesetPRIORITY_CHANGE_LOOPS number of values are sent to a queue. */\r
@@ -165,7 +165,7 @@ static void prvSendToQueueInSetFromISR( void );
  * Create the queues and add them to a queue set before resuming the Tx\r
  * task.\r
  */\r
-static void prvSetupTest( xTaskHandle xQueueSetSendingTask );\r
+static void prvSetupTest( void );\r
 \r
 /*\r
  * Checks a value received from a queue falls within the range of expected\r
@@ -227,9 +227,7 @@ xTaskHandle xQueueSetSendingTask, xQueueSetReceivingTask;
 \r
 void vStartQueueSetTasks( void )\r
 {\r
-       /* Create the two queues.  The handle of the sending task is passed into\r
-       the receiving task using the task parameter.  The receiving task uses the\r
-       handle to resume the sending task after it has created the queues. */\r
+       /* Create the tasks. */\r
        xTaskCreate( prvQueueSetSendingTask, ( signed char * ) "SetTx", configMINIMAL_STACK_SIZE, NULL, queuesetMEDIUM_PRIORITY, &xQueueSetSendingTask );\r
        xTaskCreate( prvQueueSetReceivingTask, ( signed char * ) "SetRx", configMINIMAL_STACK_SIZE, ( void * ) xQueueSetSendingTask, queuesetMEDIUM_PRIORITY, &xQueueSetReceivingTask );\r
 \r
@@ -388,14 +386,10 @@ static void prvQueueSetReceivingTask( void *pvParameters )
 {\r
 unsigned long ulReceived;\r
 xQueueHandle xActivatedQueue;\r
-xTaskHandle xQueueSetSendingTask;\r
-\r
-       /* The handle to the sending task is passed in using the task parameter. */\r
-       xQueueSetSendingTask = ( xTaskHandle ) pvParameters;\r
 \r
        /* Create the queues and add them to the queue set before resuming the Tx\r
        task. */\r
-       prvSetupTest( xQueueSetSendingTask );\r
+       prvSetupTest();\r
 \r
        for( ;; )\r
        {\r
@@ -483,17 +477,11 @@ static unsigned long ulExpectedReceivedFromTask = 0, ulExpectedReceivedFromISR =
                {\r
                        /* The value received is at the lower limit of the expected range.\r
                        Don't test it and expect to receive one higher next time. */\r
-                       ulExpectedReceivedFromISR++;\r
                }\r
                else if( ( ULONG_MAX - ulReceived ) <= queuesetIGNORED_BOUNDARY )\r
                {\r
                        /* The value received is at the higher limit of the expected range.\r
                        Don't test it and expect to wrap soon. */\r
-                       ulExpectedReceivedFromISR++;\r
-                       if( ulExpectedReceivedFromISR == 0 )\r
-                       {\r
-                               ulExpectedReceivedFromISR = queuesetINITIAL_ISR_TX_VALUE;\r
-                       }\r
                }\r
                else\r
                {\r
@@ -502,11 +490,15 @@ static unsigned long ulExpectedReceivedFromTask = 0, ulExpectedReceivedFromISR =
                        {\r
                                xQueueSetTasksStatus = pdFAIL;\r
                        }\r
-                       else\r
-                       {\r
-                               /* It is expected to receive an incrementing value. */\r
-                               ulExpectedReceivedFromISR++;\r
-                       }\r
+               }\r
+\r
+               configASSERT( xQueueSetTasksStatus );\r
+\r
+               /* It is expected to receive an incrementing number. */\r
+               ulExpectedReceivedFromISR++;\r
+               if( ulExpectedReceivedFromISR == 0 )\r
+               {\r
+                       ulExpectedReceivedFromISR = queuesetINITIAL_ISR_TX_VALUE;\r
                }\r
        }\r
        else\r
@@ -516,17 +508,11 @@ static unsigned long ulExpectedReceivedFromTask = 0, ulExpectedReceivedFromISR =
                {\r
                        /* The value received is at the lower limit of the expected range.\r
                        Don't test it, and expect to receive one higher next time. */\r
-                       ulExpectedReceivedFromTask++;\r
                }\r
                else if( ( ( queuesetINITIAL_ISR_TX_VALUE - 1 ) - ulReceived ) <= queuesetIGNORED_BOUNDARY )\r
                {\r
                        /* The value received is at the higher limit of the expected range.\r
                        Don't test it and expect to wrap soon. */\r
-                       ulExpectedReceivedFromTask++;\r
-                       if( ulExpectedReceivedFromTask >= queuesetINITIAL_ISR_TX_VALUE )\r
-                       {\r
-                               ulExpectedReceivedFromTask = 0;\r
-                       }\r
                }\r
                else\r
                {\r
@@ -535,11 +521,15 @@ static unsigned long ulExpectedReceivedFromTask = 0, ulExpectedReceivedFromISR =
                        {\r
                                xQueueSetTasksStatus = pdFAIL;\r
                        }\r
-                       else\r
-                       {\r
-                               /* It is expected to receive an incrementing value. */\r
-                               ulExpectedReceivedFromTask++;\r
-                       }\r
+               }\r
+\r
+               configASSERT( xQueueSetTasksStatus );\r
+\r
+               /* It is expected to receive an incrementing number. */\r
+               ulExpectedReceivedFromTask++;\r
+               if( ulExpectedReceivedFromTask >= queuesetINITIAL_ISR_TX_VALUE )\r
+               {\r
+                       ulExpectedReceivedFromTask = 0;\r
                }\r
        }\r
 }\r
@@ -619,7 +609,7 @@ static portBASE_TYPE xQueueToWriteTo = 0;
 }\r
 /*-----------------------------------------------------------*/\r
 \r
-static void prvSetupTest( xTaskHandle xQueueSetSendingTask )\r
+static void prvSetupTest( void )\r
 {\r
 portBASE_TYPE x;\r
 unsigned long ulValueToSend = 0;\r
@@ -706,7 +696,7 @@ unsigned long ulValueToSend = 0;
 static unsigned long prvRand( void )\r
 {\r
        ulNextRand = ( ulNextRand * 1103515245UL ) + 12345UL;\r
-    return (ulNextRand / 65536UL ) % 32768UL;\r
+    return ( ulNextRand / 65536UL ) % 32768UL;\r
 }\r
 /*-----------------------------------------------------------*/\r
 \r