Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e84fc19

Browse files
committed
Make full demo exit on error
1 parent aed7209 commit e84fc19

File tree

3 files changed

+57
-18
lines changed

3 files changed

+57
-18
lines changed

FreeRTOS/Demo/Posix_GCC/Makefile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ ${BUILD_DIR}/${BIN} : ${OBJ_FILES}
9797

9898
${BUILD_DIR}/%.o : %.c Makefile
9999
-mkdir -p $(@D)
100-
$(CC) $(CPPFLAGS) $(CFLAGS) -MMD -c $< -o $@
100+
$(CC) $(CFLAGS) ${INCLUDE_DIRS} -DUSER_DEMO= -MMD -c $< -o $@
101101

102102
.PHONY: clean
103103

@@ -110,7 +110,3 @@ profile:
110110
gprof -a -p --all-lines $(GPROF_OPTIONS) $(BUILD_DIR)/$(BIN) $(BUILD_DIR)/gmon.out > $(BUILD_DIR)/prof_flat.txt
111111
gprof -a --graph $(GPROF_OPTIONS) $(BUILD_DIR)/$(BIN) $(BUILD_DIR)/gmon.out > $(BUILD_DIR)/prof_call_graph.txt
112112

113-
114-
115-
116-

FreeRTOS/Demo/Posix_GCC/main.c

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,16 +65,18 @@
6565
/* Local includes. */
6666
#include "console.h"
6767

68-
#define BLINKY_DEMO 0
69-
#define FULL_DEMO 1
70-
71-
#define mainSELECTED_APPLICATION BLINKY_DEMO
72-
7368
#ifdef BUILD_DIR
7469
#define BUILD BUILD_DIR
7570
#else
7671
#define BUILD "./"
7772
#endif
73+
#ifdef USER_DEMO
74+
#define mainSELECTED_APPLICATION USER_DEMO
75+
#else
76+
#define BLINKY_DEMO 0
77+
#define FULL_DEMO 1
78+
#define mainSELECTED_APPLICATION FULL_DEMO
79+
#endif
7880

7981
/* This demo uses heap_3.c (the libc provided malloc() and free()). */
8082

@@ -132,8 +134,6 @@ static BaseType_t xTraceRunning = pdTRUE;
132134

133135
/*-----------------------------------------------------------*/
134136

135-
136-
137137
int main( void )
138138
{
139139
/* SIGINT is not blocked by the posix port */
@@ -418,6 +418,5 @@ void handle_sigint( int signal )
418418
{
419419
printf( "chdir into %s error is %d\n", BUILD, errno );
420420
}
421-
422-
exit( 1 );
421+
exit( 2 );
423422
}

FreeRTOS/Demo/Posix_GCC/main_full.c

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ static void prvReloadModeTestTimerCallback( TimerHandle_t xTimer );
185185

186186
/* The variable into which error messages are latched. */
187187
static 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

Comments
 (0)