diff --git a/gqrxHandler.py b/gqrxHandler.py index 91d38ff..f8c2685 100644 --- a/gqrxHandler.py +++ b/gqrxHandler.py @@ -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)