diff options
Diffstat (limited to 'main.c')
| -rw-r--r-- | main.c | 45 |
1 files changed, 38 insertions, 7 deletions
@@ -1,3 +1,4 @@ +#include <assert.h> #include <errno.h> #include <fcntl.h> #include <stdint.h> @@ -13,6 +14,32 @@ #include "modem_gpios_data.h" #include "tests.h" +int usage(char* progname) +{ + printf("Usage: %s [test|flash]\n", progname); + printf("\n"); + printf("Available commands:\n"); + printf("\ttest: run self tests\n"); + printf("\tflash: dump flash GPIO (gpj1 1) status\n"); + + return 0; +} + +int dump_flash_gpio_status(int debug, char* devmem, int fd, size_t page_size) +{ + int rc; + + rc = dump_gpio_infos(devmem, fd, page_size, "gpj1", 1); + if (rc == -1) { + printf("dump_gpio_infos failed with error %d\n", rc); + + /* TODO: return more precise error */ + return EX_UNAVAILABLE; + } + + return 0; +} + int main(int argc, char *argv[]) { int fd = 0; @@ -22,6 +49,13 @@ int main(int argc, char *argv[]) char *devmem = "/dev/mem"; size_t page_size = 4096; + assert(argc >= 1); + + if (argc != 2) { + usage(argv[0]); + return EX_USAGE; + } + if (!device_is_compatible(debug)) { printf("Exiting due to incompatible device\n"); return 0; @@ -44,14 +78,11 @@ int main(int argc, char *argv[]) if (argc == 2 && !strcmp("test", argv[1])) { return run_tests(debug, devmem, fd, page_size); + } else if (argc == 2 && !strcmp("flash", argv[1])) { + return dump_flash_gpio_status(debug, devmem, fd, page_size); } else { - rc = dump_gpio_infos(devmem, fd, page_size, "gpj1", 1); - if (rc == -1) { - printf("dump_gpio_infos failed with error %d\n", rc); - - /* TODO: return more precise error */ - return EX_UNAVAILABLE; - } + usage(argv[0]); + return EX_USAGE; } rc = close(fd); |
