summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Reiss <jreiss@multitech.com>2018-08-02 07:45:58 -0500
committerJason Reiss <jreiss@multitech.com>2018-08-02 07:45:58 -0500
commitd48c010fe6c3ee0e3a6f2181d59507ffd786c0d9 (patch)
treeb0a94da160c76ff131b6bda198c88c8b98d09f22
parent8b44a4cb9e7e0e1801a48025b476eb4572a6dabf (diff)
downloadmeta-mlinux-d48c010fe6c3ee0e3a6f2181d59507ffd786c0d9.tar.gz
meta-mlinux-d48c010fe6c3ee0e3a6f2181d59507ffd786c0d9.tar.bz2
meta-mlinux-d48c010fe6c3ee0e3a6f2181d59507ffd786c0d9.zip
lora: add signal handler for gracefull shutdown of spectral scan, otherwise hardware was left in bad state
-rw-r--r--recipes-connectivity/lora/lora-gateway/lora-gateway-spectral-scan-skip-fpga-reset.patch55
1 files changed, 53 insertions, 2 deletions
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 <stdlib.h> /* EXIT atoi */
+ #include <unistd.h> /* getopt */
+ #include <string.h>
++#include <signal.h>
+
+ #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);