some fixes...

This commit is contained in:
DJ2LS 2024-03-27 19:55:19 +01:00
parent c2ff18b111
commit eccd0e12a7
6 changed files with 26 additions and 17 deletions

View file

@ -23,8 +23,8 @@ class P2PConnectionCommand(TxCommand):
def run(self, event_queue: Queue, modem):
try:
self.emit_event(event_queue)
self.logger.info(self.log_message())
session = P2PConnection(self.config, modem, self.origin, self.destination, self.state_manager, self.event_manager, self.socket_command_handler)
print(session)
if session.session_id:
self.state_manager.register_p2p_connection_session(session)
session.connect()

View file

@ -337,7 +337,7 @@ class Demodulator():
for mode in self.MODE_DICT:
codec2.api.freedv_set_sync(self.MODE_DICT[mode]["instance"], 0)
def set_decode_mode(self, modes_to_decode):
def set_decode_mode(self, modes_to_decode=None):
# Reset all modes to not decode
for m in self.MODE_DICT:
self.MODE_DICT[m]["decode"] = False
@ -349,6 +349,7 @@ class Demodulator():
self.MODE_DICT[codec2.FREEDV_MODE.datac4.value]["decode"] = True
# Enable specified modes
for mode, decode in modes_to_decode.items():
if mode in self.MODE_DICT:
self.MODE_DICT[mode]["decode"] = decode
if modes_to_decode:
for mode, decode in modes_to_decode.items():
if mode in self.MODE_DICT:
self.MODE_DICT[mode]["decode"] = decode

View file

@ -59,6 +59,7 @@ class P2PConnection:
def __init__(self, config: dict, modem, origin: str, destination: str, state_manager, event_manager, socket_command_handler=None):
self.logger = structlog.get_logger(type(self).__name__)
self.config = config
self.frame_factory = data_frame_factory.DataFrameFactory(self.config)
self.socket_command_handler = socket_command_handler
@ -70,7 +71,7 @@ class P2PConnection:
self.state_manager = state_manager
self.event_manager = event_manager
self.modem = modem
self.modem.demodulator.set_decode_mode([])
self.modem.demodulator.set_decode_mode()
self.p2p_data_rx_queue = Queue()
self.p2p_data_tx_queue = Queue()
@ -83,8 +84,8 @@ class P2PConnection:
self.event_frame_received = threading.Event()
self.RETRIES_CONNECT = 1
self.TIMEOUT_CONNECT = 10
self.RETRIES_CONNECT = 5
self.TIMEOUT_CONNECT = 5
self.TIMEOUT_DATA = 5
self.RETRIES_DATA = 5
self.ENTIRE_CONNECTION_TIMEOUT = 100
@ -92,7 +93,6 @@ class P2PConnection:
self.is_ISS = False # Indicator, if we are ISS or IRS
self.last_data_timestamp= time.time()
self.start_data_processing_worker()

View file

@ -34,13 +34,13 @@ class SM:
self.start_radio_manager()
self.start_modem()
if self.config['MODEM']['enable_socket_interface']:
if self.config['SOCKET_INTERFACE']['enable']:
self.socket_interface_manager = SocketInterfaceHandler(self.modem, self.app.config_manager, self.state_manager, self.event_manager).start_servers()
elif cmd in ['stop'] and self.modem:
self.stop_modem()
self.stop_radio_manager()
if self.config['MODEM']['enable_socket_interface']:
if self.config['SOCKET_INTERFACE']['enable']:
self.socket_interface_manager.stop_servers()
# we need to wait a bit for avoiding a portaudio crash
threading.Event().wait(0.5)
@ -48,7 +48,7 @@ class SM:
elif cmd in ['restart']:
self.stop_modem()
self.stop_radio_manager()
if self.config['MODEM']['enable_socket_interface']:
if self.config['SOCKET_INTERFACE']['enable']:
self.socket_interface_manager.stop_servers()
# we need to wait a bit for avoiding a portaudio crash

View file

@ -154,6 +154,13 @@ class SocketInterfaceHandler:
logger(msg)
def start_servers(self):
if self.command_port == 0:
self.command_port = 8300
if self.data_port == 0:
self.data_port = 8301
# Method to start both command and data server threads
self.command_server_thread = threading.Thread(target=self.run_server, args=(self.command_port, CommandSocket))
self.data_server_thread = threading.Thread(target=self.run_server, args=(self.data_port, DataSocket))

View file

@ -17,8 +17,6 @@ class SocketCommandHandler:
self.cmd_request.sendall(full_message.encode())
def handle_connect(self, data):
# Your existing connect logic
self.send_response("OK")
params = {
'origin': data[0],
@ -26,10 +24,13 @@ class SocketCommandHandler:
}
cmd = P2PConnectionCommand(self.config_manager.read(), self.state_manager, self.event_manager, params, self)
self.session = cmd.run(self.event_manager.queues, self.modem)
if self.session.session_id:
self.state_manager.register_p2p_connection_session(self.session)
self.session.connect()
#if self.session.session_id:
# self.state_manager.register_p2p_connection_session(self.session)
# self.send_response("OK")
# self.session.connect()
#else:
# self.send_response("ERROR")
def handle_disconnect(self, data):
# Your existing connect logic