WIP: added tuner option and swr

This commit is contained in:
DJ2LS 2024-04-26 11:54:24 +02:00
parent dd2c782f1d
commit f99eecb894
5 changed files with 97 additions and 3 deletions

View file

@ -1,5 +1,4 @@
import rigctld import rigctld
import tci
import rigdummy import rigdummy
import time import time
import threading import threading
@ -33,6 +32,9 @@ class RadioManager:
def set_ptt(self, state): def set_ptt(self, state):
self.radio.set_ptt(state) self.radio.set_ptt(state)
def set_tuner(self, state):
self.radio.set_tuner(state)
def set_frequency(self, frequency): def set_frequency(self, frequency):
self.radio.set_frequency(frequency) self.radio.set_frequency(frequency)
@ -49,9 +51,12 @@ class RadioManager:
self.state_manager.set("radio_mode", parameters['mode']) self.state_manager.set("radio_mode", parameters['mode'])
self.state_manager.set("radio_bandwidth", parameters['bandwidth']) self.state_manager.set("radio_bandwidth", parameters['bandwidth'])
self.state_manager.set("radio_rf_level", parameters['rf']) self.state_manager.set("radio_rf_level", parameters['rf'])
self.state_manager.set("radio_tuner", parameters['tuner'])
if self.state_manager.isTransmitting(): if self.state_manager.isTransmitting():
self.radio_alc = parameters['alc'] self.radio_alc = parameters['alc']
self.state_manager.set("radio_swr", parameters['swr'])
self.state_manager.set("s_meter_strength", parameters['strength']) self.state_manager.set("s_meter_strength", parameters['strength'])
time.sleep(self.refresh_rate) time.sleep(self.refresh_rate)
def stop(self): def stop(self):

View file

@ -27,7 +27,9 @@ class radio:
'strength': '---', 'strength': '---',
'bandwidth': '---', 'bandwidth': '---',
'rf': '---', 'rf': '---',
'ptt': False # Initial PTT state is set to False 'ptt': False, # Initial PTT state is set to False,
'tuner': False,
'swr': '---'
} }
# start rigctld... # start rigctld...
@ -62,7 +64,9 @@ class radio:
'strength': '---', 'strength': '---',
'bandwidth': '---', 'bandwidth': '---',
'rf': '---', 'rf': '---',
'ptt': False # Initial PTT state is set to False 'ptt': False, # Initial PTT state is set to False,
'tuner': False,
'swr': '---'
} }
def send_command(self, command) -> str: def send_command(self, command) -> str:
@ -168,6 +172,8 @@ class radio:
self.connected = False self.connected = False
return False return False
def set_rf_level(self, rf): def set_rf_level(self, rf):
"""Set the RF. """Set the RF.
@ -188,6 +194,49 @@ class radio:
self.connected = False self.connected = False
return False return False
def set_tuner(self, state):
"""Set the TUNER state.
Args:
state (bool): True to enable PTT, False to disable.
Returns:
bool: True if the PTT state was set successfully, False otherwise.
"""
if self.connected:
try:
if state:
self.send_command('U TUNER 1') # Enable PTT
else:
self.send_command('U TUNER 0') # Disable PTT
self.parameters['tuner'] = state # Update PTT state in parameters
return True
except Exception as err:
self.log.warning(f"[RIGCTLD] Error setting TUNER state: {err}")
self.connected = False
return False
def get_tuner(self):
"""Set the TUNER state.
Args:
state (bool): True to enable PTT, False to disable.
Returns:
bool: True if the PTT state was set successfully, False otherwise.
"""
if self.connected:
try:
result = self.send_command('u TUNER')
state = result == 1
self.parameters['tuner'] = state # Update TUNER state in parameters
return True
except Exception as err:
self.log.warning(f"[RIGCTLD] Error setting TUNER state: {err}")
self.connected = False
return False
def get_parameters(self): def get_parameters(self):
if not self.connected: if not self.connected:
self.connect() self.connect()
@ -198,6 +247,8 @@ class radio:
self.get_alc() self.get_alc()
self.get_strength() self.get_strength()
self.get_rf() self.get_rf()
self.get_tuner()
self.get_swr()
return self.parameters return self.parameters
@ -258,6 +309,19 @@ class radio:
self.log.warning(f"Error getting RF power: {e}") self.log.warning(f"Error getting RF power: {e}")
self.parameters['rf'] = 'err' self.parameters['rf'] = 'err'
def get_swr(self):
try:
rf_response = self.send_command('l SWR')
if rf_response is not None:
self.parameters['swr'] = rf_response
else:
self.parameters['swr'] = 'err'
except ValueError:
self.parameters['swr'] = 'err'
except Exception as e:
self.log.warning(f"Error getting SWR: {e}")
self.parameters['swr'] = 'err'
def start_service(self): def start_service(self):
binary_name = "rigctld" binary_name = "rigctld"
binary_paths = helpers.find_binary_paths(binary_name, search_system_wide=True) binary_paths = helpers.find_binary_paths(binary_name, search_system_wide=True)

View file

@ -63,6 +63,14 @@ class radio:
""" """ """ """
return None return None
def get_tuner(self):
""" """
return None
def get_swr(self):
""" """
return None
def set_bandwidth(self): def set_bandwidth(self):
""" """ """ """
return None return None
@ -77,6 +85,17 @@ class radio:
""" """
return None return None
def set_tuner(self, state):
"""
Args:
mode:
Returns:
"""
return None
def set_frequency(self, frequency): def set_frequency(self, frequency):
""" """

View file

@ -260,6 +260,8 @@ def get_post_radio():
app.radio_manager.set_mode(request.json['radio_mode']) app.radio_manager.set_mode(request.json['radio_mode'])
if "radio_rf_level" in request.json: if "radio_rf_level" in request.json:
app.radio_manager.set_rf_level(int(request.json['radio_rf_level'])) app.radio_manager.set_rf_level(int(request.json['radio_rf_level']))
if "radio_tuner" in request.json:
app.radio_manager.set_tuner(int(request.json['radio_tuner']))
return api_response(request.json) return api_response(request.json)
elif request.method == 'GET': elif request.method == 'GET':

View file

@ -48,6 +48,8 @@ class StateManager:
self.radio_bandwidth = 0 self.radio_bandwidth = 0
self.radio_rf_level = 0 self.radio_rf_level = 0
self.s_meter_strength = 0 self.s_meter_strength = 0
self.radio_tuner = False
self.radio_swr = 0
# Set rig control status regardless or rig control method # Set rig control status regardless or rig control method
self.radio_status = False self.radio_status = False
@ -216,6 +218,8 @@ class StateManager:
"radio_mode": self.radio_mode, "radio_mode": self.radio_mode,
"radio_rf_level": self.radio_rf_level, "radio_rf_level": self.radio_rf_level,
"s_meter_strength": self.s_meter_strength, "s_meter_strength": self.s_meter_strength,
"radio_swr": self.radio_swr,
"radio_tuner": self.radio_tuner
} }
def register_p2p_connection_session(self, session): def register_p2p_connection_session(self, session):