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 tci
import rigdummy
import time
import threading
@ -33,6 +32,9 @@ class RadioManager:
def set_ptt(self, state):
self.radio.set_ptt(state)
def set_tuner(self, state):
self.radio.set_tuner(state)
def set_frequency(self, 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_bandwidth", parameters['bandwidth'])
self.state_manager.set("radio_rf_level", parameters['rf'])
self.state_manager.set("radio_tuner", parameters['tuner'])
if self.state_manager.isTransmitting():
self.radio_alc = parameters['alc']
self.state_manager.set("radio_swr", parameters['swr'])
self.state_manager.set("s_meter_strength", parameters['strength'])
time.sleep(self.refresh_rate)
def stop(self):

View file

@ -27,7 +27,9 @@ class radio:
'strength': '---',
'bandwidth': '---',
'rf': '---',
'ptt': False # Initial PTT state is set to False
'ptt': False, # Initial PTT state is set to False,
'tuner': False,
'swr': '---'
}
# start rigctld...
@ -62,7 +64,9 @@ class radio:
'strength': '---',
'bandwidth': '---',
'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:
@ -167,6 +171,8 @@ class radio:
self.log.warning(f"[RIGCTLD] Error setting bandwidth: {err}")
self.connected = False
return False
def set_rf_level(self, rf):
"""Set the RF.
@ -188,6 +194,49 @@ class radio:
self.connected = 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):
if not self.connected:
self.connect()
@ -198,6 +247,8 @@ class radio:
self.get_alc()
self.get_strength()
self.get_rf()
self.get_tuner()
self.get_swr()
return self.parameters
@ -258,6 +309,19 @@ class radio:
self.log.warning(f"Error getting RF power: {e}")
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):
binary_name = "rigctld"
binary_paths = helpers.find_binary_paths(binary_name, search_system_wide=True)

View file

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

View file

@ -260,6 +260,8 @@ def get_post_radio():
app.radio_manager.set_mode(request.json['radio_mode'])
if "radio_rf_level" in request.json:
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)
elif request.method == 'GET':

View file

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