equal
deleted
inserted
replaced
59 signal(SIGINT, catch_signal); |
59 signal(SIGINT, catch_signal); |
60 eprintf("Got Signal %d\n",sig); |
60 eprintf("Got Signal %d\n",sig); |
61 } |
61 } |
62 #endif |
62 #endif |
63 |
63 |
64 void help() |
64 void help(void) |
65 { |
65 { |
66 printf("**************************************************************\n"); |
66 printf("**************************************************************\n"); |
67 printf("* TestMasterSlave *\n"); |
67 printf("* TestMasterSlave *\n"); |
68 printf("* *\n"); |
68 printf("* *\n"); |
69 printf("* A simple example for PC. It does implement 2 CanOpen *\n"); |
69 printf("* A simple example for PC. It does implement 2 CanOpen *\n"); |
111 setState(&TestMaster_Data, Initialisation); |
111 setState(&TestMaster_Data, Initialisation); |
112 |
112 |
113 } |
113 } |
114 } |
114 } |
115 |
115 |
|
116 /*************************** EXIT *****************************************/ |
|
117 void Exit(CO_Data* d, UNS32 id) |
|
118 { |
|
119 masterSendNMTstateChange(&TestMaster_Data, 0x02, NMT_Reset_Node); |
|
120 |
|
121 //Stop master |
|
122 setState(&TestMaster_Data, Stopped); |
|
123 } |
|
124 |
116 /****************************************************************************/ |
125 /****************************************************************************/ |
117 /*************************** MAIN *****************************************/ |
126 /*************************** MAIN *****************************************/ |
118 /****************************************************************************/ |
127 /****************************************************************************/ |
119 int main(int argc,char **argv) |
128 int main(int argc,char **argv) |
120 { |
129 { |
175 |
184 |
176 #if !defined(WIN32) || defined(__CYGWIN__) |
185 #if !defined(WIN32) || defined(__CYGWIN__) |
177 /* install signal handler for manual break */ |
186 /* install signal handler for manual break */ |
178 signal(SIGTERM, catch_signal); |
187 signal(SIGTERM, catch_signal); |
179 signal(SIGINT, catch_signal); |
188 signal(SIGINT, catch_signal); |
|
189 TimerInit(); |
180 #endif |
190 #endif |
181 |
191 |
182 #ifndef NOT_USE_DYNAMIC_LOADING |
192 #ifndef NOT_USE_DYNAMIC_LOADING |
183 if (LoadCanDriver(LibraryPath) == NULL) |
193 if (LoadCanDriver(LibraryPath) == NULL) |
184 printf("Unable to load library: %s\n",LibraryPath); |
194 printf("Unable to load library: %s\n",LibraryPath); |
222 |
232 |
223 // Start timer thread |
233 // Start timer thread |
224 StartTimerLoop(&InitNodes); |
234 StartTimerLoop(&InitNodes); |
225 |
235 |
226 // wait Ctrl-C |
236 // wait Ctrl-C |
227 |
|
228 pause(); |
237 pause(); |
229 |
238 |
230 eprintf("Finishing.\n"); |
|
231 EnterMutex(); |
|
232 masterSendNMTstateChange (&TestMaster_Data, 0x02, NMT_Reset_Node); |
|
233 LeaveMutex(); |
|
234 |
|
235 eprintf("reset\n"); |
|
236 // Stop master |
|
237 EnterMutex(); |
|
238 setState(&TestMaster_Data, Stopped); |
|
239 LeaveMutex(); |
|
240 |
|
241 // Stop timer thread |
239 // Stop timer thread |
242 StopTimerLoop(); |
240 StopTimerLoop(&Exit); |
243 |
241 |
244 // Close CAN devices (and can threads) |
242 // Close CAN devices (and can threads) |
|
243 if(strcmp(MasterBoard.baudrate, "none")) canClose(&TestMaster_Data); |
|
244 fail_master: |
245 if(strcmp(SlaveBoard.baudrate, "none")) canClose(&TestSlave_Data); |
245 if(strcmp(SlaveBoard.baudrate, "none")) canClose(&TestSlave_Data); |
246 fail_master: |
|
247 if(strcmp(MasterBoard.baudrate, "none")) canClose(&TestMaster_Data); |
|
248 fail_slave: |
246 fail_slave: |
|
247 TimerCleanup(); |
249 return 0; |
248 return 0; |
250 } |
249 } |