diff -r c74a73474cce -r bc000083297a examples/TestMasterSlave/TestMasterSlave.c --- a/examples/TestMasterSlave/TestMasterSlave.c Tue Apr 29 13:54:23 2008 +0200 +++ b/examples/TestMasterSlave/TestMasterSlave.c Fri May 02 17:30:37 2008 +0200 @@ -61,7 +61,7 @@ } #endif -void help() +void help(void) { printf("**************************************************************\n"); printf("* TestMasterSlave *\n"); @@ -113,6 +113,15 @@ } } +/*************************** EXIT *****************************************/ +void Exit(CO_Data* d, UNS32 id) +{ + masterSendNMTstateChange(&TestMaster_Data, 0x02, NMT_Reset_Node); + + //Stop master + setState(&TestMaster_Data, Stopped); +} + /****************************************************************************/ /*************************** MAIN *****************************************/ /****************************************************************************/ @@ -177,6 +186,7 @@ /* install signal handler for manual break */ signal(SIGTERM, catch_signal); signal(SIGINT, catch_signal); + TimerInit(); #endif #ifndef NOT_USE_DYNAMIC_LOADING @@ -224,27 +234,16 @@ StartTimerLoop(&InitNodes); // wait Ctrl-C - pause(); - eprintf("Finishing.\n"); - EnterMutex(); - masterSendNMTstateChange (&TestMaster_Data, 0x02, NMT_Reset_Node); - LeaveMutex(); - - eprintf("reset\n"); - // Stop master - EnterMutex(); - setState(&TestMaster_Data, Stopped); - LeaveMutex(); - // Stop timer thread - StopTimerLoop(); + StopTimerLoop(&Exit); // Close CAN devices (and can threads) + if(strcmp(MasterBoard.baudrate, "none")) canClose(&TestMaster_Data); +fail_master: if(strcmp(SlaveBoard.baudrate, "none")) canClose(&TestSlave_Data); -fail_master: - if(strcmp(MasterBoard.baudrate, "none")) canClose(&TestMaster_Data); fail_slave: + TimerCleanup(); return 0; }