summaryrefslogtreecommitdiffstats
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c45
1 files changed, 38 insertions, 7 deletions
diff --git a/main.c b/main.c
index 876cca3..4a9fdb2 100644
--- a/main.c
+++ b/main.c
@@ -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);