bind p2p connection to interface

This commit is contained in:
DJ2LS 2024-03-16 13:44:58 +01:00
parent 24f41edb63
commit 4d3a0832d5
5 changed files with 47 additions and 19 deletions

View file

@ -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']

View file

@ -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)

View file

@ -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()

View file

@ -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

View file

@ -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()