diff -r 3ebf16150b2e -r e747d2e26af0 examples/TestMasterSlave/TestMasterSlave.c --- a/examples/TestMasterSlave/TestMasterSlave.c Tue Apr 03 20:20:27 2007 +0200 +++ b/examples/TestMasterSlave/TestMasterSlave.c Wed Apr 04 13:04:31 2007 +0200 @@ -20,12 +20,21 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#if defined(WIN32) && !defined(__CYGWIN__) +#include +#include "getopt.h" +void pause(void) +{ + system("PAUSE"); +} +#else #include #include -#include -#include +//#include +//#include #include #include +#endif #include #include @@ -69,54 +78,20 @@ return 0; } -CAN_HANDLE SlaveCanHandle; -CAN_HANDLE MasterCanHandle; - -// Baudrate values for Peak board : -// CAN_BAUD_1M CAN_BAUD_500K CAN_BAUD_250K CAN_BAUD_125K CAN_BAUD_100K CAN_BAUD_50K -// CAN_BAUD_20K CAN_BAUD_10K CAN_BAUD_5K - -#ifdef CAN_BAUD_500K -int TranslateBaudeRate(char* optarg){ - if(!strcmp( optarg, "1M")) return CAN_BAUD_1M; - if(!strcmp( optarg, "500K")) return CAN_BAUD_500K; - if(!strcmp( optarg, "250K")) return CAN_BAUD_250K; - if(!strcmp( optarg, "125K")) return CAN_BAUD_125K; - if(!strcmp( optarg, "100K")) return CAN_BAUD_100K; - if(!strcmp( optarg, "50K")) return CAN_BAUD_50K; - if(!strcmp( optarg, "20K")) return CAN_BAUD_20K; - if(!strcmp( optarg, "10K")) return CAN_BAUD_10K; - if(!strcmp( optarg, "5K")) return CAN_BAUD_5K; - if(!strcmp( optarg, "none")) return 0; - return 0x0000; -} -s_BOARD SlaveBoard = {"0", CAN_BAUD_500K, &TestSlave_Data}; -s_BOARD MasterBoard = {"1", CAN_BAUD_500K, &TestMaster_Data}; -#else -int TranslateBaudeRate(char* optarg){ - if(!strcmp( optarg, "1M")) return 1000; - if(!strcmp( optarg, "500K")) return 500; - if(!strcmp( optarg, "250K")) return 250; - if(!strcmp( optarg, "125K")) return 125; - if(!strcmp( optarg, "100K")) return 100; - if(!strcmp( optarg, "50K")) return 50; - if(!strcmp( optarg, "20K")) return 20; - if(!strcmp( optarg, "10K")) return 10; - if(!strcmp( optarg, "5K")) return 5; - if(!strcmp( optarg, "none")) return 0; - return 0; -} -s_BOARD SlaveBoard = {"0", 500, &TestSlave_Data}; -s_BOARD MasterBoard = {"1", 500, &TestMaster_Data}; -#endif - - +CAN_PORT SlaveCanHandle; +CAN_PORT MasterCanHandle; + +s_BOARD SlaveBoard = {"0", "500K"}; +s_BOARD MasterBoard = {"1", "500K"}; + +#if !defined(WIN32) || defined(__CYGWIN__) void catch_signal(int sig) { signal(SIGTERM, catch_signal); signal(SIGINT, catch_signal); eprintf("Got Signal %d\n",sig); } +#endif void help() { @@ -132,6 +107,8 @@ printf("* ./TestMasterSlave [OPTIONS] *\n"); printf("* *\n"); printf("* OPTIONS: *\n"); + printf("* -l : Can library [\"libcanfestival_can_virtual.so\"] *\n"); + printf("* *\n"); printf("* Slave: *\n"); printf("* -s : bus name [\"0\"] *\n"); printf("* -S : 1M,500K,250K,125K,100K,50K,20K,10K,none(disable) *\n"); @@ -181,8 +158,9 @@ char c; extern char *optarg; - - while ((c = getopt(argc, argv, "-m:s:M:S:")) != EOF) + char* LibraryPath="libcanfestival_can_virtual.so"; + + while ((c = getopt(argc, argv, "-m:s:M:S:l:")) != EOF) { switch(c) { @@ -208,7 +186,7 @@ help(); exit(1); } - SlaveBoard.baudrate = TranslateBaudeRate(optarg); + SlaveBoard.baudrate = optarg; break; case 'M' : if (optarg[0] == 0) @@ -216,7 +194,15 @@ help(); exit(1); } - MasterBoard.baudrate = TranslateBaudeRate(optarg); + MasterBoard.baudrate = optarg; + break; + case 'l' : + if (optarg[0] == 0) + { + help(); + exit(1); + } + LibraryPath = optarg; break; default: help(); @@ -224,16 +210,31 @@ } } - /* install signal handler for manual break */ +#if !defined(WIN32) || defined(__CYGWIN__) + /* install signal handler for manual break */ signal(SIGTERM, catch_signal); signal(SIGINT, catch_signal); - +#endif + +#ifndef NOT_USE_DYNAMIC_LOADING + LoadCanDriver(LibraryPath); +#endif // Open CAN devices - if(SlaveBoard.baudrate) - if((SlaveCanHandle = canOpen(&SlaveBoard))==NULL) goto fail_slave; - - if(MasterBoard.baudrate) - if((MasterCanHandle = canOpen(&MasterBoard))==NULL) goto fail_master; + if(SlaveBoard.baudrate){ + SlaveCanHandle = canOpen(&SlaveBoard,&TestSlave_Data); + if(SlaveCanHandle == NULL){ + eprintf("Cannot open Slave Board (%s,%s)\n",SlaveBoard.busname, SlaveBoard.baudrate); + goto fail_slave; + } + } + + if(MasterBoard.baudrate){ + MasterCanHandle = canOpen(&MasterBoard,&TestMaster_Data); + if(MasterCanHandle == NULL){ + eprintf("Cannot open Master Board (%s,%s)\n",SlaveBoard.busname, SlaveBoard.baudrate); + goto fail_master; + } + } // Start timer thread StartTimerLoop(&InitNodes);