@@ -185,6 +185,7 @@ static void prvReloadModeTestTimerCallback( TimerHandle_t xTimer );
185185
186186/* The variable into which error messages are latched. */
187187static char * pcStatusMessage = "OK: No errors" ;
188+ int xErrorCount = 0 ;
188189
189190/* This semaphore is created purely to test using the vSemaphoreDelete() and
190191 * semaphore tracing API functions. It has no other purpose. */
@@ -287,113 +288,139 @@ static void prvCheckTask( void * pvParameters )
287288 if ( xAreTimerDemoTasksStillRunning ( xCycleFrequency ) != pdTRUE )
288289 {
289290 pcStatusMessage = "Error: TimerDemo" ;
291+ xErrorCount ++ ;
290292 }
291293 }
292294 #endif
293295
294296 if ( xAreStreamBufferTasksStillRunning () != pdTRUE )
295297 {
296298 pcStatusMessage = "Error: StreamBuffer" ;
299+ xErrorCount ++ ;
297300 }
298301 else if ( xAreMessageBufferTasksStillRunning () != pdTRUE )
299302 {
300303 pcStatusMessage = "Error: MessageBuffer" ;
304+ xErrorCount ++ ;
301305 }
302306 else if ( xAreTaskNotificationTasksStillRunning () != pdTRUE )
303307 {
304308 pcStatusMessage = "Error: Notification" ;
309+ xErrorCount ++ ;
305310 }
306- /* else if( xAreTaskNotificationArrayTasksStillRunning() != pdTRUE ) */
307- /* { */
308- /* pcStatusMessage = "Error: NotificationArray"; */
309- /* } */
311+ /* else if( xAreTaskNotificationArrayTasksStillRunning() != pdTRUE )
312+ {
313+ pcStatusMessage = "Error: NotificationArray";
314+ xErrorCount++;
315+ } */
310316 else if ( xAreInterruptSemaphoreTasksStillRunning () != pdTRUE )
311317 {
312318 pcStatusMessage = "Error: IntSem" ;
319+ xErrorCount ++ ;
313320 }
314321 else if ( xAreEventGroupTasksStillRunning () != pdTRUE )
315322 {
316323 pcStatusMessage = "Error: EventGroup" ;
324+ xErrorCount ++ ;
317325 }
318326 else if ( xAreIntegerMathsTaskStillRunning () != pdTRUE )
319327 {
320328 pcStatusMessage = "Error: IntMath" ;
329+ xErrorCount ++ ;
321330 }
322331 else if ( xAreGenericQueueTasksStillRunning () != pdTRUE )
323332 {
324333 pcStatusMessage = "Error: GenQueue" ;
334+ xErrorCount ++ ;
325335 }
326336 else if ( xAreQueuePeekTasksStillRunning () != pdTRUE )
327337 {
328338 pcStatusMessage = "Error: QueuePeek" ;
339+ xErrorCount ++ ;
329340 }
330341 else if ( xAreBlockingQueuesStillRunning () != pdTRUE )
331342 {
332343 pcStatusMessage = "Error: BlockQueue" ;
344+ xErrorCount ++ ;
333345 }
334346 else if ( xAreSemaphoreTasksStillRunning () != pdTRUE )
335347 {
336348 pcStatusMessage = "Error: SemTest" ;
349+ xErrorCount ++ ;
337350 }
338351 else if ( xArePollingQueuesStillRunning () != pdTRUE )
339352 {
340353 pcStatusMessage = "Error: PollQueue" ;
354+ xErrorCount ++ ;
341355 }
342356 else if ( xAreMathsTaskStillRunning () != pdPASS )
343357 {
344358 pcStatusMessage = "Error: Flop" ;
359+ xErrorCount ++ ;
345360 }
346361 else if ( xAreRecursiveMutexTasksStillRunning () != pdTRUE )
347362 {
348363 pcStatusMessage = "Error: RecMutex" ;
364+ xErrorCount ++ ;
349365 }
350366 else if ( xAreCountingSemaphoreTasksStillRunning () != pdTRUE )
351367 {
352368 pcStatusMessage = "Error: CountSem" ;
369+ xErrorCount ++ ;
353370 }
354371 else if ( xIsCreateTaskStillRunning () != pdTRUE )
355372 {
356373 pcStatusMessage = "Error: Death" ;
374+ xErrorCount ++ ;
357375 }
358376 else if ( xAreDynamicPriorityTasksStillRunning () != pdPASS )
359377 {
360378 pcStatusMessage = "Error: Dynamic" ;
379+ xErrorCount ++ ;
361380 }
362381 else if ( xIsQueueOverwriteTaskStillRunning () != pdPASS )
363382 {
364383 pcStatusMessage = "Error: Queue overwrite" ;
384+ xErrorCount ++ ;
365385 }
366386 else if ( xAreBlockTimeTestTasksStillRunning () != pdPASS )
367387 {
368388 pcStatusMessage = "Error: Block time" ;
389+ xErrorCount ++ ;
369390 }
370391 else if ( xAreAbortDelayTestTasksStillRunning () != pdPASS )
371392 {
372393 pcStatusMessage = "Error: Abort delay" ;
394+ xErrorCount ++ ;
373395 }
374396 else if ( xIsInterruptStreamBufferDemoStillRunning () != pdPASS )
375397 {
376398 pcStatusMessage = "Error: Stream buffer interrupt" ;
399+ xErrorCount ++ ;
377400 }
378401 else if ( xAreMessageBufferAMPTasksStillRunning () != pdPASS )
379402 {
380403 pcStatusMessage = "Error: Message buffer AMP" ;
404+ xErrorCount ++ ;
381405 }
382406
383407 #if ( configUSE_QUEUE_SETS == 1 )
384408 else if ( xAreQueueSetTasksStillRunning () != pdPASS )
385409 {
386410 pcStatusMessage = "Error: Queue set" ;
411+ xErrorCount ++ ;
387412 }
388413 else if ( xAreQueueSetPollTasksStillRunning () != pdPASS )
389414 {
390415 pcStatusMessage = "Error: Queue set polling" ;
416+ xErrorCount ++ ;
391417 }
392418 #endif
393419
394420 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
395421 else if ( xAreStaticAllocationTasksStillRunning () != pdPASS )
396422 {
423+ xErrorCount ++ ;
397424 pcStatusMessage = "Error: Static allocation" ;
398425 }
399426 #endif /* configSUPPORT_STATIC_ALLOCATION */
@@ -402,6 +429,11 @@ static void prvCheckTask( void * pvParameters )
402429 pcStatusMessage ,
403430 xTaskGetTickCount () );
404431
432+ if ( xErrorCount != 0 )
433+ {
434+ exit ( 1 );
435+ }
436+
405437 /* Reset the error condition */
406438 pcStatusMessage = "OK: No errors" ;
407439 }
@@ -490,6 +522,7 @@ void vFullDemoIdleFunction( void )
490522 if ( xRunCodeCoverageTestAdditions () != pdPASS )
491523 {
492524 pcStatusMessage = "Code coverage additions failed.\r\n" ;
525+ xErrorCount ++ ;
493526 }
494527
495528 if ( ( xTaskGetTickCount () - configINITIAL_TICK_COUNT ) >= xMaxRunTime )
@@ -656,18 +689,21 @@ static void prvDemonstrateTaskStateAndHandleGetFunctions( void )
656689 if ( xTaskGetCurrentTaskHandle () != xIdleTaskHandle )
657690 {
658691 pcStatusMessage = "Error: Returned idle task handle was incorrect" ;
692+ xErrorCount ++ ;
659693 }
660694
661695 /* Check the same handle is obtained using the idle task's name. First try
662696 * with the wrong name, then the right name. */
663697 if ( xTaskGetHandle ( "Idle" ) == xIdleTaskHandle )
664698 {
665699 pcStatusMessage = "Error: Returned handle for name Idle was incorrect" ;
700+ xErrorCount ++ ;
666701 }
667702
668703 if ( xTaskGetHandle ( "IDLE" ) != xIdleTaskHandle )
669704 {
670705 pcStatusMessage = "Error: Returned handle for name Idle was incorrect" ;
706+ xErrorCount ++ ;
671707 }
672708
673709 /* Check the timer task handle was returned correctly. */
@@ -676,23 +712,27 @@ static void prvDemonstrateTaskStateAndHandleGetFunctions( void )
676712 if ( strcmp ( pcTaskName , "Tmr Svc" ) != 0 )
677713 {
678714 pcStatusMessage = "Error: Returned timer task handle was incorrect" ;
715+ xErrorCount ++ ;
679716 }
680717
681718 if ( xTaskGetHandle ( "Tmr Svc" ) != xTimerTaskHandle )
682719 {
683720 pcStatusMessage = "Error: Returned handle for name Tmr Svc was incorrect" ;
721+ xErrorCount ++ ;
684722 }
685723
686724 /* This task is running, make sure it's state is returned as running. */
687725 if ( eTaskStateGet ( xIdleTaskHandle ) != eRunning )
688726 {
689727 pcStatusMessage = "Error: Returned idle task state was incorrect" ;
728+ xErrorCount ++ ;
690729 }
691730
692731 /* If this task is running, then the timer task must be blocked. */
693732 if ( eTaskStateGet ( xTimerTaskHandle ) != eBlocked )
694733 {
695734 pcStatusMessage = "Error: Returned timer task state was incorrect" ;
735+ xErrorCount ++ ;
696736 }
697737
698738 /* Also with the vTaskGetInfo() function. */
@@ -709,6 +749,7 @@ static void prvDemonstrateTaskStateAndHandleGetFunctions( void )
709749 ( xTaskInfo .xHandle != xTimerTaskHandle ) )
710750 {
711751 pcStatusMessage = "Error: vTaskGetInfo() returned incorrect information about the timer task" ;
752+ xErrorCount ++ ;
712753 }
713754
714755 /* Other tests that should only be performed once follow. The test task
@@ -726,6 +767,7 @@ static void prvDemonstrateTaskStateAndHandleGetFunctions( void )
726767 if ( eTaskStateGet ( xTestTask ) != eReady )
727768 {
728769 pcStatusMessage = "Error: Returned test task state was incorrect 1" ;
770+ xErrorCount ++ ;
729771 }
730772
731773 /* Now suspend the test task and check its state is reported correctly. */
@@ -734,6 +776,7 @@ static void prvDemonstrateTaskStateAndHandleGetFunctions( void )
734776 if ( eTaskStateGet ( xTestTask ) != eSuspended )
735777 {
736778 pcStatusMessage = "Error: Returned test task state was incorrect 2" ;
779+ xErrorCount ++ ;
737780 }
738781
739782 /* Now delete the task and check its state is reported correctly. */
@@ -742,6 +785,7 @@ static void prvDemonstrateTaskStateAndHandleGetFunctions( void )
742785 if ( eTaskStateGet ( xTestTask ) != eDeleted )
743786 {
744787 pcStatusMessage = "Error: Returned test task state was incorrect 3" ;
788+ xErrorCount ++ ;
745789 }
746790 }
747791 }
0 commit comments