From 0a4b7a5780a688309d100f3c378eaa0be100d040 Mon Sep 17 00:00:00 2001 From: Reini Urban Date: Mon, 10 Jun 2024 11:21:50 +0200 Subject: [PATCH] mraa-gpio: return proper error codes because the permissions might be missing, and then we want to fallback to sudo mraa-gpio. Signed-off-by: Reini Urban --- tools/mraa-gpio.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/mraa-gpio.c b/tools/mraa-gpio.c index 05b931611..882eda6c3 100644 --- a/tools/mraa-gpio.c +++ b/tools/mraa-gpio.c @@ -162,6 +162,7 @@ gpio_isr_stop(struct gpio_source* gpio_info) int main(int argc, char** argv) { + int retval = 0; if (argc == 1) { print_command_error(); } @@ -177,10 +178,13 @@ main(int argc, char** argv) if (argc == 4) { int pin = atoi(argv[2]); mraa_boolean_t rawmode = strcmp(argv[1], "setraw") == 0; - if (gpio_set(pin, atoi(argv[3]), rawmode) != MRAA_SUCCESS) + if (gpio_set(pin, atoi(argv[3]), rawmode) != MRAA_SUCCESS) { fprintf(stdout, "Could not initialize gpio %d\n", pin); + retval = 1; + } } else { print_command_error(); + retval = 2; } } else if ((strcmp(argv[1], "get") == 0) || (strcmp(argv[1], "getraw") == 0)) { if (argc == 3) { @@ -191,9 +195,11 @@ main(int argc, char** argv) fprintf(stdout, "Pin %d = %d\n", pin, level); } else { fprintf(stdout, "Could not initialize gpio %d\n", pin); + retval = 1; } } else { print_command_error(); + retval = 2; } } else if (strcmp(argv[1], "monitor") == 0) { if (argc == 3) { @@ -211,13 +217,16 @@ main(int argc, char** argv) gpio_isr_stop(&gpio_info); } else { fprintf(stdout, "Failed to register ISR for pin %d\n", pin); + retval = 3; } } else { print_command_error(); + retval = 2; } } else { print_command_error(); + retval = 2; } } - return 0; + return retval; }