From dd13fc6eab9cb81ffb7a2db34ee8b2a9d826f552 Mon Sep 17 00:00:00 2001 From: Maximilian Pachl Date: Sun, 11 Oct 2015 08:48:24 +0200 Subject: [PATCH 1/4] slcan: added listen-only flag --- slcan_attach.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/slcan_attach.c b/slcan_attach.c index 485cbe3..8be6485 100644 --- a/slcan_attach.c +++ b/slcan_attach.c @@ -58,6 +58,7 @@ void print_usage(char *prg) { fprintf(stderr, "\nUsage: %s [options] tty\n\n", prg); fprintf(stderr, "Options: -o (send open command 'O\\r')\n"); + fprintf(stderr, " -l (send listen only command 'L\\r', overrides -o)\n"); fprintf(stderr, " -c (send close command 'C\\r')\n"); fprintf(stderr, " -f (read status flags with 'F\\r' to reset error states)\n"); fprintf(stderr, " -s (set CAN speed 0..8)\n"); @@ -81,6 +82,7 @@ int main(int argc, char **argv) int detach = 0; int waitkey = 0; int send_open = 0; + int send_listen = 0; int send_close = 0; int send_read_status_flags = 0; char *speed = NULL; @@ -90,10 +92,10 @@ int main(int argc, char **argv) char *name = NULL; int opt; - while ((opt = getopt(argc, argv, "l:dwocfs:b:n:?")) != -1) { + while ((opt = getopt(argc, argv, "ldwocfs:b:n:?")) != -1) { switch (opt) { case 'l': - fprintf(stderr, "Ignored option '-l'\n"); + send_listen = 1; break; case 'd': @@ -168,7 +170,12 @@ int main(int argc, char **argv) write(fd, buf, strlen(buf)); } - if (send_open) { + /* prefer listen-only over normal open */ + if (send_listen) { + sprintf(buf, "L\r"); + write(fd, buf, strlen(buf)); + + } else if (send_open) { sprintf(buf, "O\r"); write(fd, buf, strlen(buf)); } From e00c34b286072c3cdfec956e2875b14a8143bf77 Mon Sep 17 00:00:00 2001 From: Maximilian Pachl Date: Tue, 13 Oct 2015 23:53:02 +0200 Subject: [PATCH 2/4] added info message about ignoring -o if -l and -o are both passed --- slcan_attach.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/slcan_attach.c b/slcan_attach.c index 8be6485..3917d8a 100644 --- a/slcan_attach.c +++ b/slcan_attach.c @@ -175,6 +175,9 @@ int main(int argc, char **argv) sprintf(buf, "L\r"); write(fd, buf, strlen(buf)); + if (send_open) + printf("ignoring -o, due to listen-only option -l\n"); + } else if (send_open) { sprintf(buf, "O\r"); write(fd, buf, strlen(buf)); From fa8f1d4306a24eae3179914493813c3dbbcba2ff Mon Sep 17 00:00:00 2001 From: Maximilian Date: Wed, 14 Oct 2015 10:32:55 +0200 Subject: [PATCH 3/4] codestyle: removed extra line --- slcan_attach.c | 1 - 1 file changed, 1 deletion(-) diff --git a/slcan_attach.c b/slcan_attach.c index 3917d8a..7856cbc 100644 --- a/slcan_attach.c +++ b/slcan_attach.c @@ -177,7 +177,6 @@ int main(int argc, char **argv) if (send_open) printf("ignoring -o, due to listen-only option -l\n"); - } else if (send_open) { sprintf(buf, "O\r"); write(fd, buf, strlen(buf)); From 96fabc3b6a35ff1bbf3217856a483b0460e074b5 Mon Sep 17 00:00:00 2001 From: Maximilian Date: Wed, 14 Oct 2015 23:07:53 +0200 Subject: [PATCH 4/4] removed unnecessary info when -l and -o is used --- slcan_attach.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/slcan_attach.c b/slcan_attach.c index 7856cbc..40bddc8 100644 --- a/slcan_attach.c +++ b/slcan_attach.c @@ -94,10 +94,6 @@ int main(int argc, char **argv) while ((opt = getopt(argc, argv, "ldwocfs:b:n:?")) != -1) { switch (opt) { - case 'l': - send_listen = 1; - break; - case 'd': detach = 1; break; @@ -110,6 +106,10 @@ int main(int argc, char **argv) send_open = 1; break; + case 'l': + send_listen = 1; + break; + case 'c': send_close = 1; break; @@ -170,13 +170,9 @@ int main(int argc, char **argv) write(fd, buf, strlen(buf)); } - /* prefer listen-only over normal open */ if (send_listen) { sprintf(buf, "L\r"); write(fd, buf, strlen(buf)); - - if (send_open) - printf("ignoring -o, due to listen-only option -l\n"); } else if (send_open) { sprintf(buf, "O\r"); write(fd, buf, strlen(buf));