mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
adjusted events - still a WIP
This commit is contained in:
parent
79130edbe9
commit
ff777b212c
4 changed files with 28 additions and 14 deletions
|
@ -52,8 +52,9 @@ class ARQSessionISS(arq_session.ARQSession):
|
|||
}
|
||||
}
|
||||
|
||||
def __init__(self, config: dict, modem, dxcall: str, data: bytearray):
|
||||
def __init__(self, config: dict, modem, dxcall: str, data: bytearray, state_manager):
|
||||
super().__init__(config, modem, dxcall)
|
||||
self.state_manager = state_manager
|
||||
self.data = data
|
||||
self.data_crc = ''
|
||||
|
||||
|
@ -61,11 +62,18 @@ class ARQSessionISS(arq_session.ARQSession):
|
|||
|
||||
self.state = ISS_State.NEW
|
||||
self.id = self.generate_id()
|
||||
|
||||
self.frame_factory = data_frame_factory.DataFrameFactory(self.config)
|
||||
|
||||
def generate_id(self):
|
||||
return random.randint(1,255)
|
||||
|
||||
while True:
|
||||
random_int = random.randint(1,255)
|
||||
if random_int not in self.state_manager.arq_iss_sessions:
|
||||
return random_int
|
||||
if len(self.state_manager.arq_iss_sessions) >= 255:
|
||||
return False
|
||||
|
||||
|
||||
def transmit_wait_and_retry(self, frame_or_burst, timeout, retries, mode):
|
||||
while retries > 0:
|
||||
self.event_frame_received = threading.Event()
|
||||
|
|
|
@ -19,7 +19,9 @@ class ARQRawCommand(TxCommand):
|
|||
self.emit_event(event_queue)
|
||||
self.logger.info(self.log_message())
|
||||
|
||||
iss = ARQSessionISS(self.config, modem, self.dxcall, self.data)
|
||||
self.state_manager.register_arq_iss_session(iss)
|
||||
iss.start()
|
||||
return iss
|
||||
iss = ARQSessionISS(self.config, modem, self.dxcall, self.data, self.state_manager)
|
||||
if iss.id:
|
||||
self.state_manager.register_arq_iss_session(iss)
|
||||
iss.start()
|
||||
return iss
|
||||
return False
|
|
@ -86,8 +86,9 @@ def validate(req, param, validator, isRequired = True):
|
|||
def enqueue_tx_command(cmd_class, params = {}):
|
||||
command = cmd_class(app.config_manager.read(), app.state_manager, app.event_manager, params)
|
||||
app.logger.info(f"Command {command.get_name()} running...")
|
||||
command.run(app.modem_events, app.service_manager.modem) # TODO remove the app.modem_event custom queue
|
||||
|
||||
if command.run(app.modem_events, app.service_manager.modem): # TODO remove the app.modem_event custom queue
|
||||
return True
|
||||
return False
|
||||
## REST API
|
||||
@app.route('/', methods=['GET'])
|
||||
def index():
|
||||
|
@ -220,9 +221,10 @@ 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)
|
||||
enqueue_tx_command(command_arq_raw.ARQRawCommand, request.json)
|
||||
return api_response(request.json)
|
||||
|
||||
if enqueue_tx_command(command_arq_raw.ARQRawCommand, request.json):
|
||||
return api_response(request.json)
|
||||
else:
|
||||
api_abort('Error executing command...', 500)
|
||||
@app.route('/modem/stop_transmission', methods=['POST'])
|
||||
def post_modem_send_raw_stop():
|
||||
|
||||
|
|
|
@ -109,13 +109,15 @@ class StateManager:
|
|||
|
||||
def register_arq_iss_session(self, session):
|
||||
if session.id in self.arq_iss_sessions:
|
||||
raise RuntimeError(f"ARQ ISS Session '{session.id}' already exists!")
|
||||
return False
|
||||
self.arq_iss_sessions[session.id] = session
|
||||
return True
|
||||
|
||||
def register_arq_irs_session(self, session):
|
||||
if session.id in self.arq_irs_sessions:
|
||||
raise RuntimeError(f"ARQ IRS Session '{session.id}' already exists!")
|
||||
return False
|
||||
self.arq_irs_sessions[session.id] = session
|
||||
return True
|
||||
|
||||
def get_arq_iss_session(self, id):
|
||||
if id not in self.arq_iss_sessions:
|
||||
|
|
Loading…
Reference in a new issue