mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
ARQ WIP
This commit is contained in:
parent
18534a87aa
commit
8f1894da50
1 changed files with 23 additions and 57 deletions
|
@ -133,11 +133,11 @@ class DataFrameFactory:
|
||||||
"frames_per_burst": 1,
|
"frames_per_burst": 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
# arq data burst frame
|
# arq burst frame
|
||||||
self.template_list[FR_TYPE.BURST_FRAME.value] = {
|
self.template_list[FR_TYPE.BURST_FRAME.value] = {
|
||||||
"frame_length": "dynamic",
|
"frame_length": "dynamic",
|
||||||
"n_frames_per_burst": 1,
|
|
||||||
"session_id": 1,
|
"session_id": 1,
|
||||||
|
"offset": 4,
|
||||||
"data": "dynamic",
|
"data": "dynamic",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,19 +145,20 @@ class DataFrameFactory:
|
||||||
self.template_list[FR_TYPE.BURST_ACK.value] = {
|
self.template_list[FR_TYPE.BURST_ACK.value] = {
|
||||||
"frame_length": self.LENGTH_SIG1_FRAME,
|
"frame_length": self.LENGTH_SIG1_FRAME,
|
||||||
"session_id": 1,
|
"session_id": 1,
|
||||||
"snr":1,
|
"offset":4,
|
||||||
"speed_level": 1,
|
"speed_level": 1,
|
||||||
"len_arq_rx_frame_buffer": 4
|
"frames_per_burst": 1,
|
||||||
|
"snr": 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
# arq burst nack
|
# arq burst nack
|
||||||
self.template_list[FR_TYPE.BURST_NACK.value] = {
|
self.template_list[FR_TYPE.BURST_NACK.value] = {
|
||||||
"frame_length": self.LENGTH_SIG1_FRAME,
|
"frame_length": self.LENGTH_SIG1_FRAME,
|
||||||
"session_id": 1,
|
"session_id": 1,
|
||||||
"snr": 1,
|
"offset":4,
|
||||||
"speed_level": 1,
|
"speed_level": 1,
|
||||||
"len_arq_rx_frame_buffer": 4,
|
"frames_per_burst": 1,
|
||||||
"n_frames_per_burst": 1
|
"snr": 1,
|
||||||
}
|
}
|
||||||
|
|
||||||
def construct(self, frametype, content, frame_length=LENGTH_SIG1_FRAME):
|
def construct(self, frametype, content, frame_length=LENGTH_SIG1_FRAME):
|
||||||
|
@ -215,7 +216,7 @@ class DataFrameFactory:
|
||||||
elif key == "gridsquare":
|
elif key == "gridsquare":
|
||||||
extracted_data[key] = helpers.decode_grid(data)
|
extracted_data[key] = helpers.decode_grid(data)
|
||||||
|
|
||||||
elif key in ["session_id", "speed_level", "n_frames_per_burst", "version"]:
|
elif key in ["session_id", "speed_level", "frames_per_burst", "version"]:
|
||||||
extracted_data[key] = int.from_bytes(data, 'big')
|
extracted_data[key] = int.from_bytes(data, 'big')
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -350,69 +351,34 @@ class DataFrameFactory:
|
||||||
}
|
}
|
||||||
return self.construct(FR_TYPE.ARQ_SESSION_INFO_ACK, payload)
|
return self.construct(FR_TYPE.ARQ_SESSION_INFO_ACK, payload)
|
||||||
|
|
||||||
def build_arq_burst_frame(self, session_id: int, max_size: int, n_frame: int,
|
def build_arq_burst_frame(self, session_id: int, offset: int, data: bytes):
|
||||||
frame_payload: bytes):
|
|
||||||
payload = {
|
payload = {
|
||||||
"n_frames_per_burst": bytes([n_frames_per_burst]),
|
|
||||||
"session_id": session_id.to_bytes(1, 'big'),
|
"session_id": session_id.to_bytes(1, 'big'),
|
||||||
"data": frame_payload
|
"offset": offset.to_bytes(4, 'big'),
|
||||||
|
"data": data,
|
||||||
}
|
}
|
||||||
|
return self.construct(FR_TYPE.BURST_FRAME, payload)
|
||||||
|
|
||||||
return self.construct(FR_TYPE.BURST_FRAME.value, payload, frame_length=max_size)
|
def build_arq_burst_ack(self, session_id: bytes, offset, speed_level: int,
|
||||||
|
frames_per_burst: int, snr: int):
|
||||||
|
|
||||||
def build_arq_burst_ack(self, session_id: bytes, snr: int, speed_level: int, len_arq_rx_frame_buffer: int):
|
|
||||||
payload = {
|
payload = {
|
||||||
"session_id": session_id,
|
"session_id": session_id,
|
||||||
|
"offset": offset.to_bytes(4, 'big'),
|
||||||
|
"speed_level": speed_level.to_bytes(1, 'big'),
|
||||||
|
"frames_per_burst": frames_per_burst.to_bytes(1, 'big'),
|
||||||
"snr": helpers.snr_to_bytes(snr),
|
"snr": helpers.snr_to_bytes(snr),
|
||||||
"speed_level": bytes([speed_level]),
|
|
||||||
"len_arq_rx_frame_buffer": bytes([len_arq_rx_frame_buffer])
|
|
||||||
}
|
}
|
||||||
return self.construct(FR_TYPE.BURST_ACK, payload)
|
return self.construct(FR_TYPE.BURST_ACK, payload)
|
||||||
|
|
||||||
def build_arq_frame_ack(self, session_id: bytes, snr: int):
|
def build_arq_burst_nack(self, session_id: bytes, offset, speed_level: int,
|
||||||
# ack_frame = bytearray(self.length_sig1_frame)
|
frames_per_burst: int, snr: int):
|
||||||
# ack_frame[:1] = bytes([FR_TYPE.FR_ACK.value])
|
|
||||||
# ack_frame[1:2] = self.session_id
|
|
||||||
# ack_frame[2:3] = helpers.snr_to_bytes(snr)
|
|
||||||
payload = {
|
|
||||||
"session_id": session_id,
|
|
||||||
"snr": helpers.snr_to_bytes(snr)
|
|
||||||
}
|
|
||||||
return self.construct(FR_TYPE.FR_ACK, payload)
|
|
||||||
|
|
||||||
|
|
||||||
def build_arq_burst_nack(self, session_id: bytes, snr: int, speed_level: int, len_arq_rx_frame_buffer: int, n_frames_per_burst: int):
|
|
||||||
# nack_frame = bytearray(self.length_sig1_frame)
|
|
||||||
# nack_frame[:1] = bytes([FR_TYPE.BURST_NACK.value])
|
|
||||||
# nack_frame[1:2] = self.session_id
|
|
||||||
# nack_frame[2:3] = helpers.snr_to_bytes(0)
|
|
||||||
# nack_frame[3:4] = bytes([int(self.speed_level)])
|
|
||||||
# nack_frame[4:5] = bytes([int(tx_n_frames_per_burst)])
|
|
||||||
# nack_frame[5:9] = len(self.arq_rx_frame_buffer).to_bytes(4, byteorder="big")
|
|
||||||
payload = {
|
payload = {
|
||||||
"session_id": session_id,
|
"session_id": session_id,
|
||||||
|
"offset": offset.to_bytes(4, 'big'),
|
||||||
|
"speed_level": speed_level.to_bytes(1, 'big'),
|
||||||
|
"frames_per_burst": frames_per_burst.to_bytes(1, 'big'),
|
||||||
"snr": helpers.snr_to_bytes(snr),
|
"snr": helpers.snr_to_bytes(snr),
|
||||||
"speed_level": bytes([speed_level]),
|
|
||||||
"len_arq_rx_frame_buffer": bytes([len_arq_rx_frame_buffer]),
|
|
||||||
"n_frames_per_burst": bytes([n_frames_per_burst])
|
|
||||||
}
|
}
|
||||||
return self.construct(FR_TYPE.BURST_NACK, payload)
|
return self.construct(FR_TYPE.BURST_NACK, payload)
|
||||||
|
|
||||||
def build_arq_frame_nack(self, session_id: bytes, snr: int, speed_level: int, len_arq_rx_frame_buffer: int, n_frames_per_burst: int):
|
|
||||||
# nack_frame = bytearray(self.length_sig1_frame)
|
|
||||||
# nack_frame[:1] = bytes([FR_TYPE.FR_NACK.value])
|
|
||||||
# nack_frame[1:2] = self.session_id
|
|
||||||
# nack_frame[2:3] = helpers.snr_to_bytes(snr)
|
|
||||||
# nack_frame[3:4] = bytes([int(self.speed_level)])
|
|
||||||
# nack_frame[4:8] = len(self.arq_rx_frame_buffer).to_bytes(4, byteorder="big")
|
|
||||||
|
|
||||||
payload = {
|
|
||||||
"session_id": session_id,
|
|
||||||
"snr": helpers.snr_to_bytes(snr),
|
|
||||||
"speed_level": bytes([speed_level]),
|
|
||||||
"len_arq_rx_frame_buffer": bytes([len_arq_rx_frame_buffer]),
|
|
||||||
"n_frames_per_burst": bytes([n_frames_per_burst])
|
|
||||||
|
|
||||||
}
|
|
||||||
return self.construct(FR_TYPE.FR_NACK, payload)
|
|
||||||
|
|
Loading…
Reference in a new issue