From 5f40a5d63ec552ed76bf7b1198e2c1742bf1baaf Mon Sep 17 00:00:00 2001 From: salvopitru Date: Wed, 15 Dec 2010 11:18:09 +0000 Subject: [PATCH] Added serialdump utility from sky folder to stm32w folder. It has one more option for limiting upload speed. --- platform/mb851/Makefile.mb851 | 15 +- tools/stm32w/serialdump-linux | Bin 0 -> 13593 bytes tools/stm32w/serialdump-windows.exe | Bin 0 -> 25050 bytes tools/stm32w/serialdump.c | 380 ++++++++++++++++++++++++++++ 4 files changed, 394 insertions(+), 1 deletion(-) create mode 100644 tools/stm32w/serialdump-linux create mode 100644 tools/stm32w/serialdump-windows.exe create mode 100644 tools/stm32w/serialdump.c diff --git a/platform/mb851/Makefile.mb851 b/platform/mb851/Makefile.mb851 index afca59dfd..71b3ba8bd 100644 --- a/platform/mb851/Makefile.mb851 +++ b/platform/mb851/Makefile.mb851 @@ -1,4 +1,4 @@ -# $Id: Makefile.mb851,v 1.1 2010/10/25 09:03:39 salvopitru Exp $ +# $Id: Makefile.mb851,v 1.2 2010/12/15 11:18:09 salvopitru Exp $ ARCH= irq.c sensors.c acc-sensor.c button-sensor.c temperature-sensor.c mems.c @@ -16,3 +16,16 @@ CONTIKI_TARGET_SOURCEFILES += $(ARCH) $(CONTIKI_TARGET_MAIN) MCU=STM32W108 include $(CONTIKI)/cpu/stm32w108/Makefile.stm32w108 + +SERIALDUMP = $(CONTIKI)/tools/stm32w/serialdump-linux + +ifdef OS + ifneq (,$(findstring Windows,$(OS))) + SERIALDUMP = $(CONTIKI)/tools/stm32w/serialdump-windows + endif +endif + + + +login: + $(SERIALDUMP) -b115200 -d10000 $(DEV) diff --git a/tools/stm32w/serialdump-linux b/tools/stm32w/serialdump-linux new file mode 100644 index 0000000000000000000000000000000000000000..30dd9d7e54f0dc66789daf527c6c752e9bbcb29f GIT binary patch literal 13593 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 literal 0 HcmV?d00001 diff --git a/tools/stm32w/serialdump-windows.exe b/tools/stm32w/serialdump-windows.exe new file mode 100644 index 0000000000000000000000000000000000000000..e3d0eb80774c25c3832dc3fc0ada993f5873ca17 GIT binary patch literal 25050 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 dq@_Gr3DxtHHdI{|?#}2lxO0 literal 0 HcmV?d00001 diff --git a/tools/stm32w/serialdump.c b/tools/stm32w/serialdump.c new file mode 100644 index 000000000..40c6cf7de --- /dev/null +++ b/tools/stm32w/serialdump.c @@ -0,0 +1,380 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#define BAUDRATE B57600 +#define BAUDRATE_S "57600" +#ifdef linux +#define MODEMDEVICE "/dev/ttyS0" +#else +#define MODEMDEVICE "/dev/com1" +#endif /* linux */ + +#define DEFAULT_DELAY 10000 + +#define SLIP_END 0300 +#define SLIP_ESC 0333 +#define SLIP_ESC_END 0334 +#define SLIP_ESC_ESC 0335 + +#define CSNA_INIT 0x01 + +#define BUFSIZE 40 +#define HCOLS 20 +#define ICOLS 18 + +#define MODE_START_DATE 0 +#define MODE_DATE 1 +#define MODE_START_TEXT 2 +#define MODE_TEXT 3 +#define MODE_INT 4 +#define MODE_HEX 5 +#define MODE_SLIP_AUTO 6 +#define MODE_SLIP 7 +#define MODE_SLIP_HIDE 8 + +static unsigned char rxbuf[2048]; + +static int +usage(int result) +{ + printf("Usage: serialdump [-x] [-s[on]] [-i] [-dDELAY] [-bSPEED] [SERIALDEVICE]\n"); + printf(" -x for hexadecimal output\n"); + printf(" -i for decimal output\n"); + printf(" -s for automatic SLIP mode\n"); + printf(" -so for SLIP only mode (all data is SLIP packets)\n"); + printf(" -sn to hide SLIP packages\n"); + printf(" -T[format] to add time for each text line\n"); + printf(" -dDELAY delay in us between 2 consecutive writes (must be different from 0)\n"); + printf(" (see man page for strftime() for format description)\n"); + return result; +} + +static void +print_hex_line(unsigned char *prefix, unsigned char *outbuf, int index) +{ + int i; + + printf("\r%s", prefix); + for(i = 0; i < index; i++) { + if((i % 4) == 0) { + printf(" "); + } + printf("%02X", outbuf[i] & 0xFF); + } + printf(" "); + for(i = index; i < HCOLS; i++) { + if((i % 4) == 0) { + printf(" "); + } + printf(" "); + } + for(i = 0; i < index; i++) { + if(outbuf[i] < 30 || outbuf[i] > 126) { + printf("."); + } else { + printf("%c", outbuf[i]); + } + } +} + +int main(int argc, char **argv) +{ + struct termios options; + fd_set mask, smask; + int fd; + speed_t speed = BAUDRATE; + char *speedname = BAUDRATE_S; + char *device = MODEMDEVICE; + char *timeformat = NULL; + unsigned char buf[BUFSIZE], outbuf[HCOLS]; + unsigned char mode = MODE_START_TEXT; + int nfound, flags = 0; + unsigned char lastc = '\0'; + int delay = DEFAULT_DELAY; + + int index = 1; + while (index < argc) { + if (argv[index][0] == '-') { + switch(argv[index][1]) { + case 'b': + /* set speed */ + if (strcmp(&argv[index][2], "38400") == 0) { + speed = B38400; + speedname = "38400"; + } else if (strcmp(&argv[index][2], "19200") == 0) { + speed = B19200; + speedname = "19200"; + } else if (strcmp(&argv[index][2], "57600") == 0) { + speed = B57600; + speedname = "57600"; + } else if (strcmp(&argv[index][2], "115200") == 0) { + speed = B115200; + speedname = "115200"; + } else { + fprintf(stderr, "unsupported speed: %s\n", &argv[index][2]); + return usage(1); + } + break; + case 'x': + mode = MODE_HEX; + break; + case 'i': + mode = MODE_INT; + break; + case 's': + switch(argv[index][2]) { + case 'n': + mode = MODE_SLIP_HIDE; + break; + case 'o': + mode = MODE_SLIP; + break; + default: + mode = MODE_SLIP_AUTO; + break; + } + break; + case 'T': + if(strlen(&argv[index][2]) == 0) { + timeformat = "%Y-%m-%d %H:%M:%S"; + } else { + timeformat = &argv[index][2]; + } + mode = MODE_START_DATE; + break; + case 'd': + delay = atoi(&argv[index][2]); + if(delay == 0){ + return usage(1); + } + break; + case 'h': + return usage(0); + default: + fprintf(stderr, "unknown option '%c'\n", argv[index][1]); + return usage(1); + } + index++; + } else { + device = argv[index++]; + if (index < argc) { + fprintf(stderr, "too many arguments\n"); + return usage(1); + } + } + } + fprintf(stderr, "connecting to %s (%s)", device, speedname); + + fd = open(device, O_RDWR | O_NOCTTY | O_NDELAY | O_SYNC ); + if (fd <0) { + fprintf(stderr, "\n"); + perror(device); + exit(-1); + } + fprintf(stderr, " [OK]\n"); + + if (fcntl(fd, F_SETFL, 0) < 0) { + perror("could not set fcntl"); + exit(-1); + } + + if (tcgetattr(fd, &options) < 0) { + perror("could not get options"); + exit(-1); + } +/* fprintf(stderr, "serial options set\n"); */ + cfsetispeed(&options, speed); + cfsetospeed(&options, speed); + /* Enable the receiver and set local mode */ + options.c_cflag |= (CLOCAL | CREAD); + /* Mask the character size bits and turn off (odd) parity */ + options.c_cflag &= ~(CSIZE|PARENB|PARODD); + /* Select 8 data bits */ + options.c_cflag |= CS8; + + /* Raw input */ + options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG); + /* Raw output */ + options.c_oflag &= ~OPOST; + + if (tcsetattr(fd, TCSANOW, &options) < 0) { + perror("could not set options"); + exit(-1); + } + + /* Make read() return immediately */ +/* if (fcntl(fd, F_SETFL, FNDELAY) < 0) { */ +/* perror("\ncould not set fcntl"); */ +/* exit(-1); */ +/* } */ + + FD_ZERO(&mask); + FD_SET(fd, &mask); + FD_SET(fileno(stdin), &mask); + + index = 0; + for (;;) { + smask = mask; + nfound = select(FD_SETSIZE, &smask, (fd_set *) 0, (fd_set *) 0, + (struct timeval *) 0); + if(nfound < 0) { + if (errno == EINTR) { + fprintf(stderr, "interrupted system call\n"); + continue; + } + /* something is very wrong! */ + perror("select"); + exit(1); + } + + if(FD_ISSET(fileno(stdin), &smask)) { + /* data from standard in */ + int n = read(fileno(stdin), buf, sizeof(buf)); + if (n < 0) { + perror("could not read"); + exit(-1); + } else if (n > 0) { + /* because commands might need parameters, lines needs to be + separated which means the terminating LF must be sent */ +/* while(n > 0 && buf[n - 1] < 32) { */ +/* n--; */ +/* } */ + if(n > 0) { + int i; + /* fprintf(stderr, "SEND %d bytes\n", n);*/ + /* write slowly */ + for (i = 0; i < n; i++) { + if (write(fd, &buf[i], 1) <= 0) { + perror("write"); + exit(1); + } else { + fflush(NULL); + usleep(delay); + } + } + } + } else { + /* End of input, exit. */ + exit(0); + } + } + + if(FD_ISSET(fd, &smask)) { + int i, j, n = read(fd, buf, sizeof(buf)); + if (n < 0) { + perror("could not read"); + exit(-1); + } + + for(i = 0; i < n; i++) { + switch(mode) { + case MODE_START_TEXT: + case MODE_TEXT: + printf("%c", buf[i]); + break; + case MODE_START_DATE: { + time_t t; + t = time(&t); + strftime(outbuf, HCOLS, timeformat, localtime(&t)); + printf("%s|", outbuf); + mode = MODE_DATE; + } + /* continue into the MODE_DATE */ + case MODE_DATE: + printf("%c", buf[i]); + if(buf[i] == '\n') { + mode = MODE_START_DATE; + } + break; + case MODE_INT: + printf("%03d ", buf[i]); + if(++index >= ICOLS) { + index = 0; + printf("\n"); + } + break; + case MODE_HEX: + rxbuf[index++] = buf[i]; + if(index >= HCOLS) { + print_hex_line("", rxbuf, index); + index = 0; + printf("\n"); + } + break; + + case MODE_SLIP_AUTO: + case MODE_SLIP_HIDE: + if(!flags && (buf[i] != SLIP_END)) { + /* Not a SLIP packet? */ + printf("%c", buf[i]); + break; + } + /* continue to slip only mode */ + case MODE_SLIP: + switch(buf[i]) { + case SLIP_ESC: + lastc = SLIP_ESC; + break; + + case SLIP_END: + if(index > 0) { + if(flags != 2 && mode != MODE_SLIP_HIDE) { + /* not overflowed: show packet */ + print_hex_line("SLIP: ", rxbuf, + index > HCOLS ? HCOLS : index); + printf("\n"); + } + lastc = '\0'; + index = 0; + flags = 0; + } else { + flags = !flags; + } + break; + + default: + if(lastc == SLIP_ESC) { + lastc = '\0'; + + /* Previous read byte was an escape byte, so this byte will be + interpreted differently from others. */ + switch(buf[i]) { + case SLIP_ESC_END: + buf[i] = SLIP_END; + break; + case SLIP_ESC_ESC: + buf[i] = SLIP_ESC; + break; + } + } + + rxbuf[index++] = buf[i]; + if(index >= sizeof(rxbuf)) { + fprintf(stderr, "**** slip overflow\n"); + index = 0; + flags = 2; + } + break; + } + break; + } + } + + /* after processing for some output modes */ + if(index > 0) { + switch(mode) { + case MODE_HEX: + print_hex_line("", rxbuf, index); + break; + } + } + fflush(stdout); + } + } +}