This commit is contained in:
Pedro 2023-12-12 21:33:57 +01:00
parent 18534a87aa
commit 8f1894da50

View file

@ -133,11 +133,11 @@ class DataFrameFactory:
"frames_per_burst": 1,
}
# arq data burst frame
# arq burst frame
self.template_list[FR_TYPE.BURST_FRAME.value] = {
"frame_length": "dynamic",
"n_frames_per_burst": 1,
"session_id": 1,
"offset": 4,
"data": "dynamic",
}
@ -145,19 +145,20 @@ class DataFrameFactory:
self.template_list[FR_TYPE.BURST_ACK.value] = {
"frame_length": self.LENGTH_SIG1_FRAME,
"session_id": 1,
"snr":1,
"offset":4,
"speed_level": 1,
"len_arq_rx_frame_buffer": 4
"frames_per_burst": 1,
"snr": 1,
}
# arq burst nack
self.template_list[FR_TYPE.BURST_NACK.value] = {
"frame_length": self.LENGTH_SIG1_FRAME,
"session_id": 1,
"snr": 1,
"offset":4,
"speed_level": 1,
"len_arq_rx_frame_buffer": 4,
"n_frames_per_burst": 1
"frames_per_burst": 1,
"snr": 1,
}
def construct(self, frametype, content, frame_length=LENGTH_SIG1_FRAME):
@ -215,7 +216,7 @@ class DataFrameFactory:
elif key == "gridsquare":
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')
else:
@ -350,69 +351,34 @@ class DataFrameFactory:
}
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,
frame_payload: bytes):
def build_arq_burst_frame(self, session_id: int, offset: int, data: bytes):
payload = {
"n_frames_per_burst": bytes([n_frames_per_burst]),
"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, snr: int, speed_level: int, len_arq_rx_frame_buffer: int):
def build_arq_burst_ack(self, session_id: bytes, offset, speed_level: int,
frames_per_burst: int, snr: int):
payload = {
"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),
"speed_level": bytes([speed_level]),
"len_arq_rx_frame_buffer": bytes([len_arq_rx_frame_buffer])
}
return self.construct(FR_TYPE.BURST_ACK, payload)
def build_arq_frame_ack(self, session_id: bytes, snr: int):
# ack_frame = bytearray(self.length_sig1_frame)
# 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")
def build_arq_burst_nack(self, session_id: bytes, offset, speed_level: int,
frames_per_burst: int, snr: int):
payload = {
"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),
"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)
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)