X-Git-Url: http://git.itanic.dy.fi/?p=log-plotter;a=blobdiff_plain;f=options.c;h=582b4e73627c86f5547b56e7896b6bba97a00f71;hp=5abca172add36bbee925efa6cbe8b5d1e201fa9d;hb=HEAD;hpb=112b349d73432945d85fa5d57c283a58c5cc5d22 diff --git a/options.c b/options.c index 5abca17..582b4e7 100644 --- a/options.c +++ b/options.c @@ -3,28 +3,45 @@ #include #include -#include "options.h" -#include "debug.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:vq"; + char short_options[] = "d:o:b:vqc:h"; set_default_options(opts); @@ -40,10 +57,10 @@ 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++; @@ -53,6 +70,12 @@ int read_args(int argc, char *argv[], struct plotter_options *opts) 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; }