From c9df9ed22788a5ebca6fef270d9377e74737be1b Mon Sep 17 00:00:00 2001 From: Jason Reiss Date: Thu, 19 Sep 2019 08:25:29 -0500 Subject: Apply patches for gpsd and spectral scan utility --- util_spectral_scan/src/util_spectral_scan.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'util_spectral_scan') diff --git a/util_spectral_scan/src/util_spectral_scan.c b/util_spectral_scan/src/util_spectral_scan.c index d2aecda..cbc8377 100644 --- a/util_spectral_scan/src/util_spectral_scan.c +++ b/util_spectral_scan/src/util_spectral_scan.c @@ -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; } - x = lgw_connect(false, LGW_DEFAULT_NOTCH_FREQ); /* FPGA reset/configure */ + x = lgw_connect(true, LGW_DEFAULT_NOTCH_FREQ); /* FPGA reset/configure */ if(x != 0) { printf("ERROR: Failed to connect to FPGA\n"); return EXIT_FAILURE; @@ -324,6 +340,9 @@ int main( int argc, char ** argv ) do { wait_ms(10); lgw_fpga_reg_r(LGW_FPGA_STATUS, ®_val); + if (shutdown_signal_recv) { + break; + } } while((TAKE_N_BITS_FROM((uint8_t)reg_val, 0, 5)) != 1); /* Clear has started */ @@ -346,6 +365,9 @@ int main( int argc, char ** argv ) do { wait_ms(1000); lgw_fpga_reg_r(LGW_FPGA_STATUS, ®_val); + if (shutdown_signal_recv) { + break; + } } while((TAKE_N_BITS_FROM((uint8_t)reg_val, 5, 1)) != 1); @@ -382,6 +404,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