mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
ARQ WIP - only run one ARQ session at a time
This commit is contained in:
parent
467f015cf1
commit
518a739f21
|
@ -26,6 +26,9 @@ class ARQFrameHandler(frame_handler.FrameHandler):
|
|||
|
||||
# Normal case when receiving a SESSION_OPEN for the first time
|
||||
else:
|
||||
if self.states.check_if_running_arq_session():
|
||||
self.logger.warning("DISCARDING SESSION OPEN because of ongoing ARQ session ", frame=frame)
|
||||
return
|
||||
session = ARQSessionIRS(self.config,
|
||||
self.modem,
|
||||
frame['origin'],
|
||||
|
|
|
@ -202,6 +202,8 @@ def post_modem_send_raw():
|
|||
return api_response({"info": "endpoint for SENDING RAW DATA via POST"})
|
||||
if not app.state_manager.is_modem_running:
|
||||
api_abort('Modem not running', 503)
|
||||
if app.state_manager.check_if_running_arq_session():
|
||||
api_abort('Modem busy', 503)
|
||||
if enqueue_tx_command(command_arq_raw.ARQRawCommand, request.json):
|
||||
return api_response(request.json)
|
||||
else:
|
||||
|
|
|
@ -21,8 +21,6 @@ class StateManager:
|
|||
self.is_modem_running = False
|
||||
self.is_modem_busy = False
|
||||
self.is_beacon_running = False
|
||||
self.is_arq_state = False
|
||||
self.is_arq_session = False
|
||||
|
||||
# If true, any wait() call is blocking
|
||||
self.transmitting_event = threading.Event()
|
||||
|
@ -120,6 +118,14 @@ class StateManager:
|
|||
self.arq_irs_sessions[session.id] = session
|
||||
return True
|
||||
|
||||
def check_if_running_arq_session(self, irs=False):
|
||||
sessions = self.arq_irs_sessions if irs else self.arq_iss_sessions
|
||||
for session in sessions:
|
||||
if sessions[session].state.name not in ['ENDED', 'ABORTED', 'FAILED']:
|
||||
print(f"[State Manager] running session...[{session}]")
|
||||
return True
|
||||
return False
|
||||
|
||||
def get_arq_iss_session(self, id):
|
||||
if id not in self.arq_iss_sessions:
|
||||
#raise RuntimeError(f"ARQ ISS Session '{id}' not found!")
|
||||
|
|
Loading…
Reference in a new issue