From d48c010fe6c3ee0e3a6f2181d59507ffd786c0d9 Mon Sep 17 00:00:00 2001 From: Jason Reiss Date: Thu, 2 Aug 2018 07:45:58 -0500 Subject: lora: add signal handler for gracefull shutdown of spectral scan, otherwise hardware was left in bad state --- ...ora-gateway-spectral-scan-skip-fpga-reset.patch | 55 +++++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) (limited to 'recipes-connectivity/lora/lora-gateway') diff --git a/recipes-connectivity/lora/lora-gateway/lora-gateway-spectral-scan-skip-fpga-reset.patch b/recipes-connectivity/lora/lora-gateway/lora-gateway-spectral-scan-skip-fpga-reset.patch index 6e64ea6..e4a8b2b 100644 --- a/recipes-connectivity/lora/lora-gateway/lora-gateway-spectral-scan-skip-fpga-reset.patch +++ b/recipes-connectivity/lora/lora-gateway/lora-gateway-spectral-scan-skip-fpga-reset.patch @@ -2,7 +2,49 @@ diff --git a/util_spectral_scan/src/util_spectral_scan.c b/util_spectral_scan/sr index d2aecda..f070f4b 100644 --- a/util_spectral_scan/src/util_spectral_scan.c +++ b/util_spectral_scan/src/util_spectral_scan.c -@@ -264,7 +264,7 @@ int main( int argc, char ** argv ) +@@ -30,6 +30,7 @@ Maintainer: Michael Coracin + #include /* EXIT atoi */ + #include /* getopt */ + #include ++#include + + #include "loragw_aux.h" + #include "loragw_reg.h" +@@ -66,11 +67,22 @@ Maintainer: Michael Coracin + /* -------------------------------------------------------------------------- */ + /* --- GLOBAL VARIABLES ----------------------------------------------------- */ + ++bool shutdown_signal_recv = false; ++ ++void signalHandler() { ++ shutdown_signal_recv = true; ++} ++ ++ + /* -------------------------------------------------------------------------- */ + /* --- MAIN FUNCTION -------------------------------------------------------- */ + + int main( int argc, char ** argv ) + { ++ ++ signal(SIGINT, signalHandler); ++ signal(SIGTERM, signalHandler); ++ + int i, j, k; /* loop and temporary variables */ + int x; /* return code for functions */ + int32_t reg_val; +@@ -200,6 +212,10 @@ int main( int argc, char ** argv ) + } + } + ++ if (shutdown_signal_recv) { ++ return 0; ++ } ++ + /* Start message */ + printf("+++ Start spectral scan of LoRa gateway channels +++\n"); + +@@ -264,7 +280,7 @@ int main( int argc, char ** argv ) printf("ERROR: Failed to disconnect from FPGA\n"); return EXIT_FAILURE; } @@ -11,4 +53,13 @@ index d2aecda..f070f4b 100644 if(x != 0) { printf("ERROR: Failed to connect to FPGA\n"); return EXIT_FAILURE; - +@@ -382,6 +398,10 @@ int main( int argc, char ** argv ) + } + fprintf(log_file, "\n"); + printf("\n"); ++ ++ if (shutdown_signal_recv) { ++ break; ++ } + } + fclose(log_file); -- cgit v1.2.3