diff --git a/gui/package.json b/gui/package.json index 4c28d82d..9f2b6a83 100644 --- a/gui/package.json +++ b/gui/package.json @@ -2,7 +2,7 @@ "name": "FreeDATA", "description": "FreeDATA Client application for connecting to FreeDATA server", "private": true, - "version": "0.13.6-alpha", + "version": "0.13.6-alpha.1", "main": "dist-electron/main/index.js", "scripts": { "start": "vite", diff --git a/modem/rigctld.py b/modem/rigctld.py index 5229e745..5ec756bc 100644 --- a/modem/rigctld.py +++ b/modem/rigctld.py @@ -76,7 +76,11 @@ class radio: self.connection.sendall(command.encode('utf-8') + b"\n") response = self.connection.recv(1024) self.await_response.set() - return response.decode('utf-8').strip() + stripped_result = response.decode('utf-8').strip() + if 'RPRT' in stripped_result: + return None + return stripped_result + except Exception as err: self.log.warning(f"[RIGCTLD] Error sending command [{command}] to rigctld: {err}") self.connected = False @@ -189,24 +193,70 @@ class radio: self.connect() if self.connected: - self.parameters['frequency'] = self.send_command('f') - response = self.send_command( - 'm').strip() # Get the mode/bandwidth response and remove leading/trailing spaces - try: - mode, bandwidth = response.split('\n', 1) # Split the response into mode and bandwidth - except ValueError: + self.get_frequency() + self.get_mode_bandwidth() + self.get_alc() + self.get_strength() + self.get_rf() + + return self.parameters + + def get_frequency(self): + try: + frequency_response = self.send_command('f') + self.parameters['frequency'] = frequency_response if frequency_response is not None else 'err' + except Exception as e: + self.log.warning(f"Error getting frequency: {e}") + self.parameters['frequency'] = 'err' + + def get_mode_bandwidth(self): + try: + response = self.send_command('m') + if response is not None: + response = response.strip() + mode, bandwidth = response.split('\n', 1) + else: mode = 'err' bandwidth = 'err' - + except ValueError: + mode = 'err' + bandwidth = 'err' + except Exception as e: + self.log.warning(f"Error getting mode and bandwidth: {e}") + mode = 'err' + bandwidth = 'err' + finally: self.parameters['mode'] = mode self.parameters['bandwidth'] = bandwidth - self.parameters['alc'] = self.send_command('l ALC') - self.parameters['strength'] = self.send_command('l STRENGTH') - self.parameters['rf'] = int(float(self.send_command('l RFPOWER')) * 100) # RF, RFPOWER + def get_alc(self): + try: + alc_response = self.send_command('l ALC') + self.parameters['alc'] = alc_response if alc_response is not None else 'err' + except Exception as e: + self.log.warning(f"Error getting ALC: {e}") + self.parameters['alc'] = 'err' - """Return the latest fetched parameters.""" - return self.parameters + def get_strength(self): + try: + strength_response = self.send_command('l STRENGTH') + self.parameters['strength'] = strength_response if strength_response is not None else 'err' + except Exception as e: + self.log.warning(f"Error getting strength: {e}") + self.parameters['strength'] = 'err' + + def get_rf(self): + try: + rf_response = self.send_command('l RFPOWER') + if rf_response is not None: + self.parameters['rf'] = int(float(rf_response) * 100) + else: + self.parameters['rf'] = 'err' + except ValueError: + self.parameters['rf'] = 'err' + except Exception as e: + self.log.warning(f"Error getting RF power: {e}") + self.parameters['rf'] = 'err' def start_service(self): binary_name = "rigctld" diff --git a/modem/server.py b/modem/server.py index 321dbe6e..1abda73a 100644 --- a/modem/server.py +++ b/modem/server.py @@ -29,7 +29,7 @@ app = Flask(__name__) CORS(app) CORS(app, resources={r"/*": {"origins": "*"}}) sock = Sock(app) -MODEM_VERSION = "0.13.6-alpha" +MODEM_VERSION = "0.13.6-alpha.1" # set config file to use def set_config():