From 55273f80eb28dbebeb060e3e9eb65ab3d700be3f Mon Sep 17 00:00:00 2001 From: Konrad Iturbe Date: Sun, 29 Dec 2024 21:29:10 +0100 Subject: [PATCH] scanner.py: add graceful shutdown handler for soapy, shut off soapy level logs (#108) --- sdr/{scaner.py => scanner.py} | 38 ++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) rename sdr/{scaner.py => scanner.py} (89%) diff --git a/sdr/scaner.py b/sdr/scanner.py similarity index 89% rename from sdr/scaner.py rename to sdr/scanner.py index c81d3b2..53d00ef 100644 --- a/sdr/scaner.py +++ b/sdr/scanner.py @@ -1,8 +1,14 @@ +import sys + import SoapySDR from SoapySDR import * # SOAPY_SDR_* constants + import numpy as np import time -import sys +import signal + +# set log level to error +SoapySDR.setLogLevel(SoapySDR.SOAPY_SDR_ERROR) # Configuration parameters start_freq = 800.1e6 # Start frequency in Hz (e.g., 900.1 MHz for S1G radio) @@ -147,16 +153,20 @@ def frequency_sweep(output_type="ascii", step_size=step_size_default): freq_rssi_map.clear() if __name__ == "__main__": - try: - output_type = "ascii" # Default to ASCII output - step_size = step_size_default # Default step size - if len(sys.argv) > 1: - output_type = sys.argv[1].strip().lower() - if len(sys.argv) > 2: - try: - step_size = float(sys.argv[2]) - except ValueError: - print("Invalid step size provided. Using default.") - frequency_sweep(output_type=output_type, step_size=step_size) - except KeyboardInterrupt: - print("Infinite sweep terminated by user.") + def catch_quit(sig, frame): + sdr.deactivateStream(stream) + sdr.closeStream(stream) + sys.exit(0) + + signal.signal(signal.SIGINT, catch_quit) + + output_type = "ascii" # Default to ASCII output + step_size = step_size_default # Default step size + if len(sys.argv) > 1: + output_type = sys.argv[1].strip().lower() + if len(sys.argv) > 2: + try: + step_size = float(sys.argv[2]) + except ValueError: + print("Invalid step size provided. Using default.") + frequency_sweep(output_type=output_type, step_size=step_size)