diff --git a/modem/server.py b/modem/server.py index 62b92916..79e40d8e 100644 --- a/modem/server.py +++ b/modem/server.py @@ -9,7 +9,6 @@ import queue import server_commands import service_manager import state_manager -import threading import ujson as json import websocket_manager as wsm import api_validations as validations @@ -47,7 +46,7 @@ app.modem_fft = queue.Queue() # queue which holds latest fft data app.modem_service = queue.Queue() # start / stop modem service # init state manager -app.states = state_manager.STATES(app.state_queue) +app.state_manager = state_manager.StateManager(app.state_queue) # start service manager service_manager.SM(app) @@ -111,13 +110,13 @@ def get_serial_devices(): @app.route('/modem/state', methods=['GET']) def get_modem_state(): - return api_response(app.states.sendState()) + return api_response(app.state_manager.sendState()) @app.route('/modem/cqcqcq', methods=['POST', 'GET']) def post_cqcqcq(): if request.method not in ['POST']: return api_response({"info": "endpoint for triggering a CQ via POST"}) - if app.states.is_modem_running: + if app.state_manager.is_modem_running: server_commands.cqcqcq() return api_response({"cmd": "cqcqcq"}) @@ -125,16 +124,18 @@ def post_cqcqcq(): def post_beacon(): if request.method not in ['POST']: return api_response({"info": "endpoint for controlling BEACON STATE via POST"}) - if not app.states.is_modem_running: + if not isinstance(request.json['enabled'], bool): + api_abort(f"Incorrect value for 'enabled'. Shoud be bool.") + if not app.state_manager.is_modem_running: api_abort('Modem not running', 503) - server_commands.beacon(request.json['enable_beacon']) + app.state_manager.set('is_beacon_running', request.json['enabled']) return api_response(request.json) @app.route('/modem/ping_ping', methods=['POST']) def post_ping(): if request.method not in ['POST']: return api_response({"info": "endpoint for controlling PING via POST"}) - if not app.states.is_modem_running: + if not app.state_manager.is_modem_running: api_abort('Modem not running', 503) validate(request.json, 'dxcall', validations.validate_freedata_callsign) server_commands.ping_ping(request.json['dxcall']) @@ -144,7 +145,7 @@ def post_ping(): def post_send_test_frame(): if request.method not in ['POST']: return api_response({"info": "endpoint for triggering a TEST_FRAME via POST"}) - if app.states.is_modem_running: + if app.state_manager.is_modem_running: server_commands.modem_send_test_frame() return api_response({"cmd": "test_frame"}) @@ -152,7 +153,7 @@ def post_send_test_frame(): def post_send_fec_frame(): if request.method not in ['POST']: return api_response({"info": "endpoint for triggering a FEC frame via POST"}) - if app.states.is_modem_running: + if app.state_manager.is_modem_running: server_commands.modem_fec_transmit(request.json) return api_response(request.json) @@ -160,7 +161,7 @@ def post_send_fec_frame(): def post_send_fec_is_writing(): if request.method not in ['POST']: return api_response({"info": "endpoint for triggering a IS WRITING frame via POST"}) - if app.states.is_modem_running: + if app.state_manager.is_modem_running: server_commands.modem_fec_is_writing(request.json) return api_response(request.json) diff --git a/modem/server_commands.py b/modem/server_commands.py index 967fe321..73464167 100644 --- a/modem/server_commands.py +++ b/modem/server_commands.py @@ -21,14 +21,6 @@ def ping_ping(dxcall): "[CMD] PING command execution error", e=err ) -def beacon(beacon_state, interval=300): - log.info( - "[CMD] Changing beacon state", state=beacon_state - ) - if (beacon_state): - DATA_QUEUE_TRANSMIT.put(["BEACON", interval, beacon_state]) - else: - DATA_QUEUE_TRANSMIT.put(["BEACON", beacon_state]) def modem_send_test_frame(): log.info( diff --git a/modem/service_manager.py b/modem/service_manager.py index b20cee2b..ee18d06a 100644 --- a/modem/service_manager.py +++ b/modem/service_manager.py @@ -18,7 +18,7 @@ class SM: self.modem_events = app.modem_events self.modem_fft = app.modem_fft self.modem_service = app.modem_service - self.states = app.states + self.states = app.state_manager runner_thread = threading.Thread( target=self.runner, name="runner thread", daemon=True diff --git a/modem/state_manager.py b/modem/state_manager.py index 5b2e18fa..c84b1ab0 100644 --- a/modem/state_manager.py +++ b/modem/state_manager.py @@ -1,6 +1,6 @@ import time import ujson as json -class STATES: +class StateManager: def __init__(self, statequeue): # state related settings