mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 10:04:33 +02:00
Merge remote-tracking branch 'origin/dev-arq' into dev-message-auto-repeat
This commit is contained in:
commit
3a84ec0bbb
|
@ -96,9 +96,7 @@ class ARQSessionIRS(arq_session.ARQSession):
|
||||||
self.log(f"Waiting {timeout} seconds...")
|
self.log(f"Waiting {timeout} seconds...")
|
||||||
if not self.event_frame_received.wait(timeout):
|
if not self.event_frame_received.wait(timeout):
|
||||||
self.log("Timeout waiting for ISS. Session failed.")
|
self.log("Timeout waiting for ISS. Session failed.")
|
||||||
self.session_ended = time.time()
|
self.transmission_failed()
|
||||||
self.set_state(IRS_State.FAILED)
|
|
||||||
self.event_manager.send_arq_session_finished(False, self.id, self.dxcall, False, self.state.name, statistics=self.calculate_session_statistics())
|
|
||||||
|
|
||||||
def launch_transmit_and_wait(self, frame, timeout, mode):
|
def launch_transmit_and_wait(self, frame, timeout, mode):
|
||||||
thread_wait = threading.Thread(target = self.transmit_and_wait,
|
thread_wait = threading.Thread(target = self.transmit_and_wait,
|
||||||
|
@ -208,11 +206,7 @@ class ARQSessionIRS(arq_session.ARQSession):
|
||||||
flag_checksum=False)
|
flag_checksum=False)
|
||||||
self.transmit_frame(ack, mode=FREEDV_MODE.signalling)
|
self.transmit_frame(ack, mode=FREEDV_MODE.signalling)
|
||||||
self.log("CRC fail at the end of transmission!")
|
self.log("CRC fail at the end of transmission!")
|
||||||
self.session_ended = time.time()
|
self.transmission_failed()
|
||||||
self.set_state(IRS_State.FAILED)
|
|
||||||
self.event_manager.send_arq_session_finished(
|
|
||||||
False, self.id, self.dxcall, False, self.state.name, statistics=self.calculate_session_statistics())
|
|
||||||
return False, False
|
|
||||||
|
|
||||||
def calibrate_speed_settings(self):
|
def calibrate_speed_settings(self):
|
||||||
self.speed_level = 0 # for now stay at lowest speed level
|
self.speed_level = 0 # for now stay at lowest speed level
|
||||||
|
@ -236,4 +230,13 @@ class ARQSessionIRS(arq_session.ARQSession):
|
||||||
self.set_state(IRS_State.ABORTED)
|
self.set_state(IRS_State.ABORTED)
|
||||||
self.event_manager.send_arq_session_finished(
|
self.event_manager.send_arq_session_finished(
|
||||||
False, self.id, self.dxcall, False, self.state.name, statistics=self.calculate_session_statistics())
|
False, self.id, self.dxcall, False, self.state.name, statistics=self.calculate_session_statistics())
|
||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
|
def transmission_failed(self, irs_frame=None):
|
||||||
|
# final function for failed transmissions
|
||||||
|
self.session_ended = time.time()
|
||||||
|
self.set_state(IRS_State.FAILED)
|
||||||
|
self.log(f"Transmission failed!")
|
||||||
|
self.event_manager.send_arq_session_finished(True, self.id, self.dxcall,False, self.state.name, statistics=self.calculate_session_statistics())
|
||||||
|
self.states.setARQ(False)
|
||||||
|
return None, None
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
modemport = 3050
|
modemport = 3050
|
||||||
|
|
||||||
[STATION]
|
[STATION]
|
||||||
mycall = XX1XXX
|
mycall = AA1AAA
|
||||||
mygrid = AA12aa
|
mygrid = AA12aa
|
||||||
myssid = 6
|
myssid = 1
|
||||||
ssid_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
ssid_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
||||||
enable_explorer = True
|
enable_explorer = True
|
||||||
enable_stats = True
|
enable_stats = True
|
||||||
|
|
|
@ -222,10 +222,11 @@ def post_modem_send_raw_stop():
|
||||||
if not app.state_manager.is_modem_running:
|
if not app.state_manager.is_modem_running:
|
||||||
api_abort('Modem not running', 503)
|
api_abort('Modem not running', 503)
|
||||||
|
|
||||||
for id in app.state_manager.arq_irs_sessions:
|
if app.state_manager.getARQ():
|
||||||
app.state_manager.arq_irs_sessions[id].abort_transmission()
|
for id in app.state_manager.arq_irs_sessions:
|
||||||
for id in app.state_manager.arq_iss_sessions:
|
app.state_manager.arq_irs_sessions[id].abort_transmission()
|
||||||
app.state_manager.arq_iss_sessions[id].abort_transmission()
|
for id in app.state_manager.arq_iss_sessions:
|
||||||
|
app.state_manager.arq_iss_sessions[id].abort_transmission()
|
||||||
|
|
||||||
return api_response(request.json)
|
return api_response(request.json)
|
||||||
|
|
||||||
|
|
|
@ -130,11 +130,11 @@ class TestARQSession(unittest.TestCase):
|
||||||
|
|
||||||
def testARQSessionSmallPayload(self):
|
def testARQSessionSmallPayload(self):
|
||||||
# set Packet Error Rate (PER) / frame loss probability
|
# set Packet Error Rate (PER) / frame loss probability
|
||||||
self.loss_probability = 0
|
self.loss_probability = 30
|
||||||
|
|
||||||
self.establishChannels()
|
self.establishChannels()
|
||||||
params = {
|
params = {
|
||||||
'dxcall': "XX1XXX-1",
|
'dxcall': "AA1AAA-1",
|
||||||
'data': base64.b64encode(bytes("Hello world!", encoding="utf-8")),
|
'data': base64.b64encode(bytes("Hello world!", encoding="utf-8")),
|
||||||
'type': "raw_lzma"
|
'type': "raw_lzma"
|
||||||
}
|
}
|
||||||
|
@ -149,7 +149,7 @@ class TestARQSession(unittest.TestCase):
|
||||||
|
|
||||||
self.establishChannels()
|
self.establishChannels()
|
||||||
params = {
|
params = {
|
||||||
'dxcall': "XX1XXX-1",
|
'dxcall': "AA1AAA-1",
|
||||||
'data': base64.b64encode(np.random.bytes(1000)),
|
'data': base64.b64encode(np.random.bytes(1000)),
|
||||||
'type': "raw_lzma"
|
'type': "raw_lzma"
|
||||||
}
|
}
|
||||||
|
@ -165,7 +165,7 @@ class TestARQSession(unittest.TestCase):
|
||||||
|
|
||||||
self.establishChannels()
|
self.establishChannels()
|
||||||
params = {
|
params = {
|
||||||
'dxcall': "XX1XXX-1",
|
'dxcall': "AA1AAA-1",
|
||||||
'data': base64.b64encode(np.random.bytes(100)),
|
'data': base64.b64encode(np.random.bytes(100)),
|
||||||
}
|
}
|
||||||
cmd = ARQRawCommand(self.config, self.iss_state_manager, self.iss_event_queue, params)
|
cmd = ARQRawCommand(self.config, self.iss_state_manager, self.iss_event_queue, params)
|
||||||
|
@ -184,7 +184,7 @@ class TestARQSession(unittest.TestCase):
|
||||||
|
|
||||||
self.establishChannels()
|
self.establishChannels()
|
||||||
params = {
|
params = {
|
||||||
'dxcall': "XX1XXX-1",
|
'dxcall': "AA1AAA-1",
|
||||||
'data': base64.b64encode(np.random.bytes(100)),
|
'data': base64.b64encode(np.random.bytes(100)),
|
||||||
}
|
}
|
||||||
cmd = ARQRawCommand(self.config, self.iss_state_manager, self.iss_event_queue, params)
|
cmd = ARQRawCommand(self.config, self.iss_state_manager, self.iss_event_queue, params)
|
||||||
|
@ -200,7 +200,7 @@ class TestARQSession(unittest.TestCase):
|
||||||
def testSessionCleanupISS(self):
|
def testSessionCleanupISS(self):
|
||||||
|
|
||||||
params = {
|
params = {
|
||||||
'dxcall': "XX1XXX-1",
|
'dxcall': "AA1AAA-1",
|
||||||
'data': base64.b64encode(np.random.bytes(100)),
|
'data': base64.b64encode(np.random.bytes(100)),
|
||||||
}
|
}
|
||||||
cmd = ARQRawCommand(self.config, self.iss_state_manager, self.iss_event_queue, params)
|
cmd = ARQRawCommand(self.config, self.iss_state_manager, self.iss_event_queue, params)
|
||||||
|
|
Loading…
Reference in a new issue