diff --git a/tools/Makefile b/tools/Makefile index 87f14d317..3dab44216 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,5 +1,7 @@ all: tunslip +tunslip6: tools-utils.c tunslip6.c + gitclean: @git clean -d -x -n .. @echo "Enter yes to delete these files"; diff --git a/tools/tools-utils.c b/tools/tools-utils.c new file mode 100644 index 000000000..6ad0a9365 --- /dev/null +++ b/tools/tools-utils.c @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2015, SICS Swedish ICT + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + */ + +#include "tools-utils.h" + +speed_t +select_baudrate(int baudrate) { + switch(baudrate) { +#ifdef B50 + case 50: + return B50; +#endif +#ifdef B75 + case 75: + return B75; +#endif +#ifdef B110 + case 110: + return B110; +#endif +#ifdef B134 + case 134: + return B134; +#endif +#ifdef B150 + case 150: + return B150; +#endif +#ifdef B200 + case 200: + return B200; +#endif +#ifdef B300 + case 300: + return B300; +#endif +#ifdef B600 + case 600: + return B600; +#endif +#ifdef B1200 + case 1200: + return B1200; +#endif +#ifdef B1800 + case 1800: + return B1800; +#endif +#ifdef B2400 + case 2400: + return B2400; +#endif +#ifdef B4800 + case 4800: + return B4800; +#endif +#ifdef B9600 + case 9600: + return B9600; +#endif +#ifdef B19200 + case 19200: + return B19200; +#endif +#ifdef B38400 + case 38400: + return B38400; +#endif +#ifdef B57600 + case 57600: + return B57600; +#endif +#ifdef B115200 + case 115200: + return B115200; +#endif +#ifdef B230400 + return B230400; +#endif +#ifdef B460800 + case 460800: + return B460800; +#endif +#ifdef B500000 + case 500000: + return B500000; +#endif +#ifdef B576000 + case 576000: + return B576000; +#endif +#ifdef B921600 + case 921600: + return B921600; +#endif +#ifdef B1000000 + case 1000000: + return B1000000; +#endif +#ifdef B1152000 + case 1152000: + return B1152000; +#endif +#ifdef B1500000 + case 1500000: + return B1500000; +#endif +#ifdef B2000000 + case 2000000: + return B2000000; +#endif +#ifdef B2500000 + case 2500000: + return B2500000; +#endif +#ifdef B3000000 + case 3000000: + return B3000000; +#endif +#ifdef B3500000 + case 3500000: + return B3500000; +#endif +#ifdef B4000000 + case 4000000: + return B4000000; +#endif + default: + return 0; + } +} + diff --git a/tools/tools-utils.h b/tools/tools-utils.h new file mode 100644 index 000000000..4b996cc75 --- /dev/null +++ b/tools/tools-utils.h @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2015, SICS Swedish ICT + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Institute nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * This file is part of the Contiki operating system. + * + */ + +#ifndef TOOLS_UTILS +#define TOOLS_UTILS + +#include + +#if __APPLE__ +#ifndef B460800 +#define B460800 460800 +#endif +#ifndef B500000 +#define B500000 500000 +#endif +#ifndef B576000 +#define B576000 576000 +#endif +#ifndef B921600 +#define B921600 921600 +#endif +#ifndef B1000000 +#define B1000000 1000000 +#endif +#ifndef B1152000 +#define B1152000 1152000 +#endif +#ifndef B1500000 +#define B1500000 1500000 +#endif +#ifndef B2000000 +#define B2000000 2000000 +#endif +#ifndef B2500000 +#define B2500000 2500000 +#endif +#ifndef B3000000 +#define B3000000 3000000 +#endif +#ifndef B3500000 +#define B3500000 3500000 +#endif +#ifndef B4000000 +#define B4000000 4000000 +#endif +#endif + +speed_t select_baudrate(int baudrate); + +#endif /* TOOLS_UTILS */ diff --git a/tools/tunslip6.c b/tools/tunslip6.c index e654930ed..0f10a72bf 100644 --- a/tools/tunslip6.c +++ b/tools/tunslip6.c @@ -56,44 +56,7 @@ #include -#if __APPLE__ -#ifndef B460800 -#define B460800 460800 -#endif -#ifndef B500000 -#define B500000 500000 -#endif -#ifndef B576000 -#define B576000 576000 -#endif -#ifndef B921600 -#define B921600 921600 -#endif -#ifndef B1000000 -#define B1000000 1000000 -#endif -#ifndef B1152000 -#define B1152000 1152000 -#endif -#ifndef B1500000 -#define B1500000 1500000 -#endif -#ifndef B2000000 -#define B2000000 2000000 -#endif -#ifndef B2500000 -#define B2500000 2500000 -#endif -#ifndef B3000000 -#define B3000000 3000000 -#endif -#ifndef B3500000 -#define B3500000 3500000 -#endif -#ifndef B4000000 -#define B4000000 4000000 -#endif -#endif +#include "tools-utils.h" #ifndef BAUDRATE #define BAUDRATE B115200 @@ -914,162 +877,11 @@ exit(1); } ipaddr = argv[1]; - switch(baudrate) { - case -2: - break; /* Use default. */ -#ifdef B50 - case 50: - b_rate = B50; - break; -#endif -#ifdef B75 - case 75: - b_rate = B75; - break; -#endif -#ifdef B110 - case 110: - b_rate = B110; - break; -#endif -#ifdef B134 - case 134: - b_rate = B134; - break; -#endif -#ifdef B150 - case 150: - b_rate = B150; - break; -#endif -#ifdef B200 - case 200: - b_rate = B200; - break; -#endif -#ifdef B300 - case 300: - b_rate = B300; - break; -#endif -#ifdef B600 - case 600: - b_rate = B600; - break; -#endif -#ifdef B1200 - case 1200: - b_rate = B1200; - break; -#endif -#ifdef B1800 - case 1800: - b_rate = B1800; - break; -#endif -#ifdef B2400 - case 2400: - b_rate = B2400; - break; -#endif -#ifdef B4800 - case 4800: - b_rate = B4800; - break; -#endif -#ifdef B9600 - case 9600: - b_rate = B9600; - break; -#endif -#ifdef B19200 - case 19200: - b_rate = B19200; - break; -#endif -#ifdef B38400 - case 38400: - b_rate = B38400; - break; -#endif -#ifdef B57600 - case 57600: - b_rate = B57600; - break; -#endif -#ifdef B115200 - case 115200: - b_rate = B115200; - break; -#endif -#ifdef B230400 - case 230400: - b_rate = B230400; - break; -#endif -#ifdef B460800 - case 460800: - b_rate = B460800; - break; -#endif -#ifdef B500000 - case 500000: - b_rate = B500000; - break; -#endif -#ifdef B576000 - case 576000: - b_rate = B576000; - break; -#endif -#ifdef B921600 - case 921600: - b_rate = B921600; - break; -#endif -#ifdef B1000000 - case 1000000: - b_rate = B1000000; - break; -#endif -#ifdef B1152000 - case 1152000: - b_rate = B1152000; - break; -#endif -#ifdef B1500000 - case 1500000: - b_rate = B1500000; - break; -#endif -#ifdef B2000000 - case 2000000: - b_rate = B2000000; - break; -#endif -#ifdef B2500000 - case 2500000: - b_rate = B2500000; - break; -#endif -#ifdef B3000000 - case 3000000: - b_rate = B3000000; - break; -#endif -#ifdef B3500000 - case 3500000: - b_rate = B3500000; - break; -#endif -#ifdef B4000000 - case 4000000: - b_rate = B4000000; - break; -#endif - default: - err(1, "unknown baudrate %d", baudrate); - break; + if(baudrate != -2) { /* -2: use default baudrate */ + b_rate = select_baudrate(baudrate); + if(b_rate == 0) { + err(1, "unknown baudrate %d", baudrate); + } } if(*tundev == '\0') {