From 4d3a0832d523a3ebd93f980f807fd945b60614d9 Mon Sep 17 00:00:00 2001 From: DJ2LS Date: Sat, 16 Mar 2024 13:44:58 +0100 Subject: [PATCH] bind p2p connection to interface --- modem/data_frame_factory.py | 5 +++++ modem/server.py | 11 +++++++++++ modem/service_manager.py | 5 ++--- modem/socket_interface.py | 22 +++++++++++++++------- modem/socket_interface_commands.py | 23 ++++++++++++++--------- 5 files changed, 47 insertions(+), 19 deletions(-) diff --git a/modem/data_frame_factory.py b/modem/data_frame_factory.py index 4577a0ea..8becb67e 100644 --- a/modem/data_frame_factory.py +++ b/modem/data_frame_factory.py @@ -18,6 +18,11 @@ class DataFrameFactory: } def __init__(self, config): + print(config) + print(config['STATION']['mycall']) + print(config['STATION']['myssid']) + print(config['STATION']['mygrid']) + self.myfullcall = f"{config['STATION']['mycall']}-{config['STATION']['myssid']}" self.mygrid = config['STATION']['mygrid'] diff --git a/modem/server.py b/modem/server.py index d335f1f4..4c4b3329 100644 --- a/modem/server.py +++ b/modem/server.py @@ -23,6 +23,7 @@ import command_arq_raw import command_message_send import event_manager import atexit +from socket_interface import SocketInterfaceHandler from message_system_db_manager import DatabaseManager from message_system_db_messages import DatabaseManagerMessages @@ -328,6 +329,8 @@ def sock_states(sock): def stop_server(): try: app.service_manager.modem_service.put("stop") + app.socket_interface_manager.stop_servers() + if app.service_manager.modem: app.service_manager.modem.sd_input_stream.stop audio.sd._terminate() @@ -358,6 +361,11 @@ if __name__ == "__main__": app.schedule_manager = ScheduleManager(app.MODEM_VERSION, app.config_manager, app.state_manager, app.event_manager) # start service manager app.service_manager = service_manager.SM(app) + + + #app.socket_interface_manager = SocketInterfaceHandler(app.service_manager.modem, app.config_manager, app.state_manager, app.event_manager) + + # start modem service app.modem_service.put("start") # initialize database default values @@ -373,4 +381,7 @@ if __name__ == "__main__": if not modemport: modemport = 5000 + #app.socket_interface_manager.start_servers() + app.run(modemaddress, modemport) + diff --git a/modem/service_manager.py b/modem/service_manager.py index 10a943f0..80a930ab 100644 --- a/modem/service_manager.py +++ b/modem/service_manager.py @@ -19,7 +19,7 @@ class SM: self.state_manager = app.state_manager self.event_manager = app.event_manager self.schedule_manager = app.schedule_manager - self.socket_interface_manager = SocketInterfaceHandler(self.config, self.state_manager, self.event_manager) + self.socket_interface_manager = None runner_thread = threading.Thread( target=self.runner, name="runner thread", daemon=True @@ -33,8 +33,7 @@ class SM: self.config = self.app.config_manager.read() self.start_radio_manager() self.start_modem() - - self.socket_interface_manager.start_servers() + 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() diff --git a/modem/socket_interface.py b/modem/socket_interface.py index d2362b69..4c18c6d2 100644 --- a/modem/socket_interface.py +++ b/modem/socket_interface.py @@ -10,12 +10,15 @@ data_queue = Queue() class CommandSocket(socketserver.BaseRequestHandler): #def __init__(self, request, client_address, server): - def __init__(self, request, client_address, server, state_manager=None, event_manager=None): + def __init__(self, request, client_address, server, modem=None, state_manager=None, event_manager=None, config_manager=None): self.state_manager = state_manager - + self.event_manager = event_manager + self.config_manager = config_manager + self.modem = modem + print(self.config_manager) self.logger = structlog.get_logger(type(self).__name__) - self.command_handler = SocketCommandHandler(request, self.state_manager) + self.command_handler = SocketCommandHandler(request, self.modem, self.config_manager, self.state_manager, self.event_manager) self.handlers = { 'CONNECT': self.command_handler.handle_connect, @@ -69,8 +72,11 @@ class CommandSocket(socketserver.BaseRequestHandler): class DataSocket(socketserver.BaseRequestHandler): #def __init__(self, request, client_address, server): - def __init__(self, request, client_address, server, state_manager=None, event_manager=None): + def __init__(self, request, client_address, server, modem=None, state_manager=None, event_manager=None, config_manager=None): self.state_manager = state_manager + self.event_manager = event_manager + self.config_manager = config_manager + self.modem = modem self.logger = structlog.get_logger(type(self).__name__) @@ -120,8 +126,10 @@ class CustomThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServe self.RequestHandlerClass(request, client_address, self, **self.extra_args) class SocketInterfaceHandler: - def __init__(self, config, state_manager, event_manager): - self.config = config + def __init__(self, modem, config_manager, state_manager, event_manager): + self.modem = modem + self.config_manager = config_manager + self.config = self.config_manager.read() self.state_manager = state_manager self.event_manager = event_manager self.logger = structlog.get_logger(type(self).__name__) @@ -148,7 +156,7 @@ class SocketInterfaceHandler: self.log(f"Interfaces started") def run_server(self, port, handler): - with CustomThreadedTCPServer(('127.0.0.1', port), handler, state_manager=self.state_manager, event_manager=self.event_manager) as server: + with CustomThreadedTCPServer(('127.0.0.1', port), handler, modem=self.modem, state_manager=self.state_manager, event_manager=self.event_manager, config_manager=self.config_manager) as server: self.log(f"Server started on port {port}") if port == self.command_port: self.command_server = server diff --git a/modem/socket_interface_commands.py b/modem/socket_interface_commands.py index 2d252b59..9ed5ac84 100644 --- a/modem/socket_interface_commands.py +++ b/modem/socket_interface_commands.py @@ -2,30 +2,35 @@ from command_p2p_connection import P2PConnectionCommand class SocketCommandHandler: - def __init__(self, request, state_manager): + def __init__(self, request, modem, config_manager, state_manager, event_manager): self.request = request + self.modem = modem + self.config_manager = config_manager self.state_manager = state_manager - - print(self.state_manager) - + self.event_manager = event_manager def send_response(self, message): self.request.sendall(message.encode()) - - def handle_connect(self, data): # Your existing connect logic self.send_response("OK\r\n") + + + print(self.modem) + print(self.config_manager) + print(self.state_manager) + print(self.event_manager) + params = { 'destination': "BB2BBB-2", 'origin': "AA1AAA-1", } - cmd = P2PConnectionCommand(self.config, self.iss_state_manager, self.iss_event_queue, params) - session = cmd.run(self.iss_event_queue, self.iss_modem) + cmd = P2PConnectionCommand(self.config_manager.read(), self.state_manager, self.event_manager, params) + session = cmd.run(self.event_manager.queues, self.modem) if session.session_id: - self.iss_state_manager.register_p2p_connection_session(session) + self.state_manager.register_p2p_connection_session(session) session.connect()