From 9a3be455dc42c47c8824dbd564292d48fe2f2cb4 Mon Sep 17 00:00:00 2001 From: Brendan Bartels <bbartels@iastate.edu> Date: Mon, 17 Apr 2017 09:08:29 -0500 Subject: [PATCH] quad: add help instructions to virtual quad --- quad/executable.mk | 4 +--- quad/src/virt_quad/.gitignore | 2 ++ quad/src/virt_quad/main.c | 39 +++++++++++++++++++++++++++++++++-- 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 quad/src/virt_quad/.gitignore diff --git a/quad/executable.mk b/quad/executable.mk index 0666c88a7..b7ddc1481 100644 --- a/quad/executable.mk +++ b/quad/executable.mk @@ -22,9 +22,6 @@ CLEANUP = $(TARGET) $(OBJDIR) default: $(TARGET) -run: $(TARGET) - $(EXEDIR)/$(NAME) - clean: rm -rf $(CLEANUP) @@ -34,6 +31,7 @@ clean: $(TARGET): $(OBJECTS) | $(EXEDIR) $(GCC) -g -o $(TARGET) $^ -I$(INCDIR) -L$(LIBDIR) $(REQLIBS) + cp $(TARGET) ./ $(OBJDIR)/%.o : %.c | $(OBJDIR) $(INCDIR) $(GCC) -c -g -o $@ $< -I$(INCDIR) -Wall diff --git a/quad/src/virt_quad/.gitignore b/quad/src/virt_quad/.gitignore new file mode 100644 index 000000000..a72889f17 --- /dev/null +++ b/quad/src/virt_quad/.gitignore @@ -0,0 +1,2 @@ +virt-quad +virt-quad-fifos/ \ No newline at end of file diff --git a/quad/src/virt_quad/main.c b/quad/src/virt_quad/main.c index 7f9e4447e..d1c8c1e0a 100644 --- a/quad/src/virt_quad/main.c +++ b/quad/src/virt_quad/main.c @@ -7,10 +7,14 @@ int handle_io_output(const char *name); int handle_io_input(const char *name, const char *value_str); void set_shm(float value, float *dest, pthread_mutex_t *lock); +void usage(char *executable_name); struct VirtQuadIO *virt_quad_io; int virt_quad_io_file_descriptor; +/** + * Implement each of the hardware interfaces. + */ int setup_hardware(hardware_t *hardware) { hardware->i2c = create_unix_i2c(); hardware->rc_receiver = create_unix_rc_receiver(); @@ -25,18 +29,25 @@ int setup_hardware(hardware_t *hardware) { int main(int argc, char *argv[]) { int fd, opt; - while ((opt = getopt(argc, argv, "q")) != -1) { + while ((opt = getopt(argc, argv, "qh")) != -1) { switch (opt) { case 'q': fd = open("/dev/null", O_WRONLY); close(STDOUT_FILENO); dup2(STDOUT_FILENO, fd); break; + case 'h': default: /* '?' */ - fprintf(stderr, "Usage: %s [-q]\n", argv[0]); + puts("from flags"); + usage(argv[0]); exit(EXIT_FAILURE); } } + if (argv[1] != NULL && strcmp(argv[1], "--help") == 0) { + puts("from if"); + usage(argv[0]); + exit(EXIT_FAILURE); + } argc -= optind; argv += optind; @@ -151,3 +162,27 @@ void set_shm(float value, float *dest, pthread_mutex_t *lock) { *dest = value; pthread_mutex_unlock(lock); } + +void usage(char *executable_name) { + printf("Usage: %s [ -h | --help | -q ] [ command ]\n", executable_name); + puts("Overview:"); + puts(" The virtual quad emulates the behavior of the real quad in the Unix"); + puts(" environment. Start the virtual quad in one tab (no arguments), and"); + puts(" then control the I/O of the quad through commands."); + puts("Commands:"); + puts(" get output"); + puts(" set input value"); + puts("Outpus:"); + puts(" led"); + puts(" motors"); + puts("Inputs:"); + puts(" rc_gear"); + puts(" rc_flap"); + puts(" rc_throttle"); + puts(" rc_pitch"); + puts(" rc_roll"); + puts(" rc_yaw"); + puts("Examples:"); + printf(" %s get led # prints 0 or 1 to stdout\n", executable_name); + printf(" in%s set rc_gear 1 # sets gear to \"on\" \n", executable_name); +} -- GitLab