mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
WIP adding arq data frame
This commit is contained in:
parent
d8df718645
commit
f28e47f441
|
@ -13,7 +13,7 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
RETRIES_CONNECT = 3
|
||||
RETRIES_TRANSFER = 3
|
||||
|
||||
TIMEOUT_DATA = 2
|
||||
TIMEOUT_DATA = 6
|
||||
|
||||
def __init__(self, config: dict, tx_frame_queue: queue.Queue, dxcall: str, session_id: int):
|
||||
super().__init__(config, tx_frame_queue, dxcall)
|
||||
|
@ -35,7 +35,7 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
pass
|
||||
|
||||
def set_state(self, state):
|
||||
self.log(f"ARQ Session {self.id} state {self.state}")
|
||||
self.log(f"ARQ Session IRS {self.id} state {self.state}")
|
||||
self.state = state
|
||||
|
||||
def set_modem_decode_modes(self, modes):
|
||||
|
@ -50,13 +50,15 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
self.transmit_frame(ack_frame)
|
||||
|
||||
self.set_modem_decode_modes(None)
|
||||
|
||||
self.state = self.STATE_WAITING_DATA
|
||||
while self.state == self.STATE_WAITING_DATA:
|
||||
if not self.event_data_received.wait(self.TIMEOUT_DATA):
|
||||
self.log("Timeout waiting for data")
|
||||
self.state = self.STATE_FAILED
|
||||
return
|
||||
else:
|
||||
print("data received")
|
||||
print(self.frame)
|
||||
|
||||
self.log("Finished ARQ IRS session")
|
||||
|
||||
|
@ -66,8 +68,9 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
|
||||
def on_data_received(self, data_frame):
|
||||
if self.state != self.STATE_WAITING_DATA:
|
||||
raise RuntimeError(f"ARQ Session: Received data while in state {self.state}")
|
||||
raise RuntimeError(f"ARQ Session: Received data while in state {self.state}, expected {self.STATE_WAITING_DATA}")
|
||||
|
||||
self.received_data = data_frame["data"]
|
||||
self.event_data_received.set()
|
||||
|
||||
|
||||
|
@ -87,3 +90,4 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
self.event_connection_ack_received.clear()
|
||||
self.event_transfer_feedback.set()
|
||||
self.event_transfer_feedback.clear()
|
||||
self.received_data = b''
|
||||
|
|
|
@ -35,7 +35,7 @@ class ARQSessionISS(arq_session.ARQSession):
|
|||
return random.randint(1,255)
|
||||
|
||||
def set_state(self, state):
|
||||
self.logger.info(f"ARQ Session {self.id} state {self.state}")
|
||||
self.logger.info(f"ARQ Session ISS {self.id} state {self.state}")
|
||||
self.state = state
|
||||
|
||||
def runner(self):
|
||||
|
@ -72,6 +72,7 @@ class ARQSessionISS(arq_session.ARQSession):
|
|||
self.build_arq_data_framespeed_level = ack['speed_level']
|
||||
self.event_connection_ack_received.set()
|
||||
|
||||
|
||||
# Sends the full payload in multiple frames
|
||||
def send_data(self):
|
||||
# Todo make this n frames per burst stuff part of the protocol again
|
||||
|
|
|
@ -127,8 +127,8 @@ class DataFrameFactory:
|
|||
|
||||
# arq data frame
|
||||
# register n frames
|
||||
for n_frame in range(0,50):
|
||||
self.template_list[FR_TYPE.BURST_01.value + n_frame] = {
|
||||
for n_frame in range(1,5):
|
||||
self.template_list[FR_TYPE.BURST_01.value + (n_frame-1)] = {
|
||||
"frame_length": "dynamic",
|
||||
"n_frames_per_burst": 1,
|
||||
"session_id": 1,
|
||||
|
|
|
@ -23,3 +23,10 @@ class ARQFrameHandler(frame_handler.FrameHandler):
|
|||
if frame['frame_type_int'] in [FR.ARQ_SESSION_OPEN_ACK_N.value, FR.ARQ_SESSION_OPEN_ACK_W.value]:
|
||||
iss_session:ARQSessionISS = self.states.get_arq_iss_session(frame['session_id'])
|
||||
iss_session.on_connection_ack_received(frame)
|
||||
|
||||
|
||||
# ARQ session data frame received
|
||||
if frame['frame_type_int'] in [FR.BURST_01.value, FR.BURST_02.value, FR.BURST_03.value, FR.BURST_04.value, FR.BURST_05.value]:
|
||||
print("received data frame....")
|
||||
irs_session:ARQSessionIRS = self.states.get_arq_irs_session(frame['session_id'])
|
||||
irs_session.on_data_received(frame)
|
|
@ -11,8 +11,7 @@ class FRAME_TYPE(Enum):
|
|||
BURST_02 = 2
|
||||
BURST_03 = 3
|
||||
BURST_04 = 4
|
||||
# ...
|
||||
BURST_50 = 50
|
||||
BURST_05 = 5
|
||||
BURST_ACK = 60
|
||||
FR_ACK = 61
|
||||
FR_REPEAT = 62
|
||||
|
|
Loading…
Reference in a new issue