--- 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");
}