diff --git a/quad/executable.mk b/quad/executable.mk index 0666c88a7cb8887a726c5e7717c2eaab61ab67c7..b7ddc1481916296dc569f90d378256b4a70c445b 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 0000000000000000000000000000000000000000..a72889f170892acba1014b48362cee10940f1fc4 --- /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 7f9e4447e0c849f9384a78ea7c012436fe384a90..d1c8c1e0abc7fc3d9725fb19a0556500fead17c6 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); +}