]> rtime.felk.cvut.cz Git - can-benchmark.git/blobdiff - utils/sterm.c
Change bisect-run script
[can-benchmark.git] / utils / sterm.c
index ee7f8d70433e64d47db376efa2925dd188bbd5ee..0e124e5cff25ec9b8432661069d76a2d20a42906 100644 (file)
@@ -47,7 +47,7 @@
 #define CHECK(cmd) ({ int ret = (cmd); if (ret == -1) { perror(#cmd " line " TOSTRING(__LINE__)); exit(1); }; ret; })
 #define CHECKPTR(cmd) ({ void *ptr = (cmd); if (ptr == (void*)-1) { perror(#cmd " line " TOSTRING(__LINE__)); exit(1); }; ptr; })
 
-#define VERBOSE(format, ...) do { if (verbose) fprintf(stderr, format, ##__VA_ARGS__); } while (0)
+#define VERBOSE(format, ...) do { if (verbose) fprintf(stderr, "sterm: " format, ##__VA_ARGS__); } while (0)
 
 bool verbose = false;
 bool exit_on_escape = true;
@@ -106,6 +106,17 @@ void exit_on_escapeseq(const char *buf, int len)
        }
 }
 
+void usage(const char* argv0)
+{
+       fprintf(stderr, "Usage: %s [options] <device>\n", argv0);
+       fprintf(stderr, "Options:\n");
+       fprintf(stderr, "  -d [+|-] create short positive/negative pulse on DTR\n");
+       fprintf(stderr, "  -e       ignore '~.' escape sequence\n");
+       fprintf(stderr, "  -n       do not switch the device to raw mode\n");
+       fprintf(stderr, "  -r [+|-] create short positive/negative pulse on RTS\n");
+       fprintf(stderr, "  -s <baudrate>\n");
+       fprintf(stderr, "  -v       verbose\n");
+}
 
 int main(int argc, char *argv[])
 {
@@ -163,7 +174,7 @@ int main(int argc, char *argv[])
                        verbose = true;
                        break;
                default: /* '?' */
-                       fprintf(stderr, "Usage: %s [-s baudrate] [-v] <device>\n", argv[0]);
+                       usage(argv[0]);
                        exit(1);
                }
        }
@@ -173,6 +184,7 @@ int main(int argc, char *argv[])
 
        if (!dev) {
                fprintf(stderr, "No device specified\n");
+               usage(argv[0]);
                exit(1);
        }
 
@@ -260,14 +272,17 @@ int main(int argc, char *argv[])
                CHECK(tcsetattr(0, TCSANOW, &tio));
        }
 
-       VERBOSE("Connected.\n");
+       VERBOSE("Connected.\r\n");
+       if (exit_on_escape)
+               VERBOSE("Use '<Enter>~.' sequence to exit.\r\n");
+
        while (1) {
                int r1, r2;
                CHECK(poll(fds, 2, -1));
                if (fds[0].revents & POLLIN) {
                        r1 = CHECK(read(0, buf, sizeof(buf)));
                        if (r1 == 0) {
-                               VERBOSE("EOF on stdin\n");
+                               VERBOSE("EOF on stdin\r\n");
                                break;
                        }
                        if (exit_on_escape)
@@ -281,7 +296,7 @@ int main(int argc, char *argv[])
                if (fds[1].revents & POLLIN) {
                        r1 = CHECK(read(fd, buf, sizeof(buf)));
                        if (r1 == 0) {
-                               VERBOSE("EOF on %s\n", dev);
+                               VERBOSE("EOF on %s\r\n", dev);
                                break;
                        }
                        r2 = CHECK(write(1, buf, r1));