Getting closer on the GQRX Handler. Doesn't close properly

This commit is contained in:
Logan Cusano
2022-04-01 01:55:14 -04:00
parent 8debd690f1
commit bbca25ce3f

View File

@@ -33,9 +33,6 @@ class GQRXHandler(threading.Thread):
self.tel_conn = None
def run(self) -> None:
self.open_gqrx()
self.create_telnet_connection()
while True:
if self.Start_GQRX:
self.open_gqrx()
@@ -43,27 +40,36 @@ class GQRXHandler(threading.Thread):
self.Start_GQRX = False
self.Stop_GQRX = False
self.logger.debug("GQRX is open, waiting for it to close")
while not self.Stop_GQRX:
sleep(1)
self.close_gqrx()
self.logger.debug('Request to close GQRX')
self.close_gqrx()
sleep(.5)
def set_gqrx_parameters(self, _frequency: str = False, _start: bool = False, _stop: bool = False,
_output_device_name: str = None, _fm_mode: str = None, _squelch: int = None,
_hostname: str = None, _port: int = None):
_hostname: str = None, _port: int = None, _start_dsp: bool = None):
if _frequency:
self.Frequency = _frequency
if self.GQRXProc:
self.change_freq(_frequency)
if _output_device_name:
self.Output_Device_Name = _output_device_name
if _fm_mode:
self.Mode = _fm_mode
if self.GQRXProc:
self.change_mode(_fm_mode)
if _squelch:
self.Squelch = _squelch
if self.GQRXProc:
self.change_squelch(_squelch)
if _hostname:
self.hostname = _hostname
@@ -73,6 +79,9 @@ class GQRXHandler(threading.Thread):
self.port = _port
self.Start_GQRX = True
if _start_dsp:
self.start_dsp()
if _start:
self.Start_GQRX = _start
@@ -92,9 +101,15 @@ class GQRXHandler(threading.Thread):
self.GQRXProc = subprocess.Popen(gqrx_kwargs, executable=self.GQRXEXE, shell=False, cwd=self.GQRXDir)
while not self.tel_conn:
self.create_telnet_connection()
sleep(.5)
self.logger.debug(f"Waiting for GQRX to start")
self.start_dsp()
self.set_all_settings(_squelch=self.Squelch, _mode=self.Mode, _freq=self.Frequency)
self.logger.debug('Finished opening GQRX')
def close_gqrx(self):
self.logger.info(f"Closing GQRX")
try:
@@ -115,21 +130,16 @@ class GQRXHandler(threading.Thread):
def create_telnet_connection(self):
self.logger.info("Creating connection")
self.tel_conn = Telnet(self.hostname, self.port)
try:
self.tel_conn = Telnet(self.hostname, self.port)
self.tel_conn.open(self.hostname, self.port)
self.logger.debug(f"GQRX is open")
return True
except ConnectionRefusedError as err:
except Exception as err:
self.logger.warning(err)
self.tel_conn = None
return False
def change_freq(self, freq):
self.logger.debug(f"Changing freq to {freq}")
self.tel_conn.write(bytes(f"F {int(freq)}", 'utf-8'))
self.tel_conn.read_until(b'RPRT 0')
def check_dsp(self):
self.logger.debug(f"Checking if DSP is running on GQRX")
self.tel_conn.write(bytes(f"u DSP", 'utf-8'))
@@ -139,8 +149,14 @@ class GQRXHandler(threading.Thread):
return False
def start_dsp(self):
self.logger.debug(f"Starting DSP on GQRX")
self.tel_conn.write(bytes(f"U DSP 1", 'utf-8'))
if not self.check_dsp():
self.logger.debug(f"Starting DSP on GQRX")
self.tel_conn.write(bytes(f"U DSP 1", 'utf-8'))
self.tel_conn.read_until(b'RPRT 0')
def change_freq(self, freq):
self.logger.debug(f"Changing freq to {freq}")
self.tel_conn.write(bytes(f"F {int(freq)}", 'utf-8'))
self.tel_conn.read_until(b'RPRT 0')
def change_squelch(self, squelch):
@@ -155,8 +171,8 @@ class GQRXHandler(threading.Thread):
self.tel_conn.write(bytes(f"M {str(mode)}", 'utf-8'))
self.tel_conn.read_until(b'RPRT 0')
def set_all_settings(self, mode, squelch, freq):
def set_all_settings(self, _mode, _squelch, _freq):
self.change_squelch(0)
self.change_mode(mode)
self.change_freq(freq)
self.change_squelch(squelch)
self.change_mode(_mode)
self.change_freq(_freq)
self.change_squelch(_squelch)