examples/kerneltest/TestMasterSlave.c
changeset 467 40efa79d27dd
parent 391 7802a7d5584f
--- a/examples/kerneltest/TestMasterSlave.c	Tue May 27 17:43:33 2008 +0200
+++ b/examples/kerneltest/TestMasterSlave.c	Mon Jun 02 08:52:06 2008 +0200
@@ -35,8 +35,20 @@
 	}
 }
 
+/***************************  EXIT  *****************************************/
+void Exit(CO_Data* d, UNS32 id)
+{
+	masterSendNMTstateChange(&TestMaster_Data, 0x02, NMT_Reset_Node);    
+
+	//Stop master
+	setState(&TestMaster_Data, Stopped);
+}
+
+
 int TestMasterSlave_start (void)
 {
+	TimerInit();
+
 	if(strcmp(SlaveBoard.baudrate, "none")){
 		
 		TestSlave_Data.heartbeatError = TestSlave_heartbeatError;
@@ -83,21 +95,13 @@
 {
 	eprintf("Finishing.\n");
 	
-	EnterMutex();
-	masterSendNMTstateChange (&TestMaster_Data, 0x02, NMT_Reset_Node);
-	LeaveMutex();
-	
-	// Stop master
-	EnterMutex();
-	setState(&TestMaster_Data, Stopped);
-	LeaveMutex();
-	
 	// Stop timer thread
-	StopTimerLoop();
+	StopTimerLoop(&Exit);
 	
 	// Close CAN devices (and can threads)
 	if(strcmp(SlaveBoard.baudrate, "none")) canClose(&TestSlave_Data);
 	if(strcmp(MasterBoard.baudrate, "none")) canClose(&TestMaster_Data);
 
+	TimerCleanup();
 	eprintf("End.\n");
 }