]> git.itanic.dy.fi Git - log-plotter/blobdiff - options.c
data.c: Reset time stamp when starting new log
[log-plotter] / options.c
index 38b29a3abd48f645c378713e5c0e850c75897da4..582b4e73627c86f5547b56e7896b6bba97a00f71 100644 (file)
--- a/options.c
+++ b/options.c
@@ -3,25 +3,45 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "options.h"
+#include "config.h"
+#include "trace.h"
 
-static void set_default_options(struct plotter_options *opts)
+void print_help_and_die(const char *exec_name)
+{
+       pr_info("Usage: %s [option]\n", exec_name);
+       pr_info("  -d, --device=DEVICE     path to the serial device\n");
+       pr_info("                          default: /dev/ttyUSB0\n");
+       pr_info("  -b, --baud=BAUD         device baud rate, default 128000\n");
+       pr_info("  -o, --output            logfile path, stdout only if omited\n");
+       pr_info("  -v, --verbose           increase verbosity\n");
+       pr_info("  -q, --quiet             decrease verbosity\n");
+       pr_info("  -c, --config=PATH       config file path\n");
+       pr_info("  -h, --help              show this help\n");
+
+       exit(0);
+}
+
+static void set_default_options(struct plotter_config *opts)
 {
        bzero(opts, sizeof(*opts));
 
-       opts->baud_rate = 128000;
+       opts->baudrate = 128000;
        opts->device_path = "/dev/ttyUSB0";
 }
 
-int read_args(int argc, char *argv[], struct plotter_options *opts)
+int read_args(int argc, char *argv[], struct plotter_config *opts)
 {
        int option_index = 0, c;
        static struct option long_options[] = {
                { .val = 'd', .name = "device", .has_arg = 1, },
                { .val = 'o', .name = "output", .has_arg = 1 },
-               { .val = 'o', .name = "baud", .has_arg = 1 },
+               { .val = 'b', .name = "baud", .has_arg = 1 },
+               { .val = 'v', .name = "verbose", .has_arg = 2 },
+               { .val = 'q', .name = "quiet", },
+               { .val = 'c', .name = "config", .has_arg = 1 },
+               { .val = 'h', .name = "help", },
        };
-       char short_options[] = "d:o:b:";
+       char short_options[] = "d:o:b:vqc:h";
 
        set_default_options(opts);
 
@@ -37,10 +57,24 @@ int read_args(int argc, char *argv[], struct plotter_options *opts)
                        opts->device_path = optarg;
                        break;
                case 'o':
-                       opts->output_path = optarg;
+                       opts->log_path = optarg;
                        break;
                case 'b':
-                       opts->baud_rate = atoi(optarg);
+                       opts->baudrate = atoi(optarg);
+                       break;
+               case 'v':
+                       trace_level++;
+                       pr_debug("Increased trace level to %d\n", trace_level);
+                       break;
+               case 'q':
+                       trace_level--;
+                       pr_debug("Degreased trace level to %d\n", trace_level);
+                       break;
+               case 'c':
+                       opts->config_file_path = optarg;
+                       break;
+               case 'h':
+                       print_help_and_die(argv[0]);
                        break;
                case '?':
                        return -1;