This commit is contained in:
Pedro 2023-12-12 20:22:34 +01:00
parent 0368c57d87
commit 2189f99918
4 changed files with 18 additions and 39 deletions

View file

@ -51,7 +51,7 @@ class ARQSessionISS(arq_session.ARQSession):
def connect(self):
self.state = self.STATE_CONNECTING
connect_frame = self.frame_factory.build_arq_session_connect(True, self.dxcall, self.id)
connect_frame = self.frame_factory.build_arq_session_connect(self.dxcall, self.id)
retries = self.RETRIES_CONNECT
while retries > 0:

View file

@ -109,8 +109,7 @@ class DataFrameFactory:
"session_id": 1,
}
# arq connect frames
self.template_list[FR_TYPE.ARQ_SESSION_OPEN_N.value] = arq_session_open
self.template_list[FR_TYPE.ARQ_SESSION_OPEN_W.value] = arq_session_open
self.template_list[FR_TYPE.ARQ_SESSION_OPEN.value] = arq_session_open
# same structure for narrow and wide types
arq_session_open_ack = {
@ -120,10 +119,7 @@ class DataFrameFactory:
"arq_protocol_version": 1
}
# arq connect ack frames
self.template_list[FR_TYPE.ARQ_SESSION_OPEN_ACK_N.value] = arq_session_open_ack
self.template_list[FR_TYPE.ARQ_SESSION_OPEN_ACK_W.value] = arq_session_open_ack
self.template_list[FR_TYPE.ARQ_SESSION_OPEN_ACK.value] = arq_session_open_ack
# arq data frame
# register n frames
@ -325,7 +321,7 @@ class DataFrameFactory:
test_frame[:1] = bytes([FR_TYPE.TEST_FRAME.value])
return test_frame
def build_arq_session_connect(self, isWideband, destination, session_id):
def build_arq_session_connect(self, destination, session_id):
payload = {
"destination_crc": helpers.get_crc_24(destination),
@ -333,10 +329,10 @@ class DataFrameFactory:
"origin": helpers.callsign_to_bytes(self.myfullcall),
"session_id": session_id.to_bytes(1, 'big'),
}
channel_type = FR_TYPE.ARQ_SESSION_OPEN_W if isWideband else FR_TYPE.ARQ_SESSION_OPEN_N
channel_type = FR_TYPE.ARQ_SESSION_OPEN
return self.construct(channel_type, payload)
def build_arq_session_connect_ack(self, isWideband, session_id, speed_level,arq_protocol_version):
def build_arq_session_connect_ack(self, session_id, speed_level,arq_protocol_version):
#connection_frame = bytearray(self.length_sig0_frame)
#connection_frame[:1] = frametype
@ -350,7 +346,7 @@ class DataFrameFactory:
"arq_protocol_version": bytes([arq_protocol_version]),
}
channel_type = FR_TYPE.ARQ_SESSION_OPEN_ACK_W if isWideband else FR_TYPE.ARQ_SESSION_OPEN_ACK_N
channel_type = FR_TYPE.ARQ_SESSION_OPEN_ACK
return self.construct(channel_type, payload)
def build_arq_data_frame(self, session_id: bytes, n_frames_per_burst: int, max_size: int, n_frame: int, frame_payload: bytes):

View file

@ -26,10 +26,8 @@ from frame_handler_arq_session import ARQFrameHandler
class DISPATCHER():
FRAME_HANDLER = {
FR_TYPE.ARQ_SESSION_OPEN_ACK_N.value: {"class": ARQFrameHandler, "name": "ARQ OPEN ACK (Narrow)"},
FR_TYPE.ARQ_SESSION_OPEN_ACK_W.value: {"class": ARQFrameHandler, "name": "ARQ OPEN ACK (Wide)"},
FR_TYPE.ARQ_SESSION_OPEN_N.value: {"class": ARQFrameHandler, "name": "ARQ Data Channel Open (Narrow)"},
FR_TYPE.ARQ_SESSION_OPEN_W.value: {"class": ARQFrameHandler, "name": "ARQ Data Channel Open (Wide)"},
FR_TYPE.ARQ_SESSION_OPEN_ACK.value: {"class": ARQFrameHandler, "name": "ARQ OPEN ACK"},
FR_TYPE.ARQ_SESSION_OPEN.value: {"class": ARQFrameHandler, "name": "ARQ Data Channel Open"},
FR_TYPE.ARQ_CONNECTION_CLOSE.value: {"class": ARQFrameHandler, "name": "ARQ CLOSE SESSION"},
FR_TYPE.ARQ_CONNECTION_HB.value: {"class": ARQFrameHandler, "name": "ARQ HEARTBEAT"},
FR_TYPE.ARQ_CONNECTION_OPEN.value: {"class": ARQFrameHandler, "name": "ARQ OPEN SESSION"},
@ -121,7 +119,7 @@ class DISPATCHER():
def get_id_from_frame(self, data):
if data[:1] in [FR_TYPE.ARQ_SESSION_OPEN_N, FR_TYPE.ARQ_SESSION_OPEN_W]:
if data[:1] == FR_TYPE.ARQ_SESSION_OPEN:
return data[13:14]
return None
@ -230,21 +228,13 @@ class DISPATCHER():
# Dictionary of functions and log messages used in process_data
# instead of a long series of if-elif-else statements.
self.rx_dispatcher = {
FR_TYPE.ARQ_SESSION_OPEN_ACK_N.value: (
FR_TYPE.ARQ_SESSION_OPEN_ACK.value: (
self.arq_iss.arq_received_channel_is_open,
"ARQ OPEN ACK (Narrow)",
"ARQ OPEN ACK",
),
FR_TYPE.ARQ_SESSION_OPEN_ACK_W.value: (
self.arq_iss.arq_received_channel_is_open,
"ARQ OPEN ACK (Wide)",
),
FR_TYPE.ARQ_SESSION_OPEN_N.value: (
FR_TYPE.ARQ_SESSION_OPEN.value: (
self.initialize_arq_transmission_irs,
"ARQ Data Channel Open (Narrow)",
),
FR_TYPE.ARQ_SESSION_OPEN_W.value: (
self.initialize_arq_transmission_irs,
"ARQ Data Channel Open (Wide)",
"ARQ Data Channel Open",
),
FR_TYPE.ARQ_CONNECTION_CLOSE.value: (
self.arq_session.received_session_close,

View file

@ -25,20 +25,13 @@ class FRAME_TYPE(Enum):
PING = 210
PING_ACK = 211
IS_WRITING = 215
# ARQ_SESSION_OPEN = 221 # TODO Rename to ARQ_CONNECTION
# ARQ_SESSION_HB = 222 # TODO Rename to ARQ_CONNECTION
# ARQ_SESSION_CLOSE = 223 # TODO Rename to ARQ_CONNECTION
# ARQ_DC_OPEN_W = 225 # TODO Rename to ARQ_SESSION
# ARQ_DC_OPEN_ACK_W = 226 # TODO Rename to ARQ_SESSION
# ARQ_DC_OPEN_N = 227 # TODO Rename to ARQ_SESSION
# ARQ_DC_OPEN_ACK_N = 228 # TODO Rename to ARQ_SESSION
ARQ_CONNECTION_OPEN = 221
ARQ_CONNECTION_HB = 222
ARQ_CONNECTION_CLOSE = 223
ARQ_SESSION_OPEN_W = 225
ARQ_SESSION_OPEN_ACK_W = 226
ARQ_SESSION_OPEN_N = 227
ARQ_SESSION_OPEN_ACK_N = 228
ARQ_SESSION_OPEN = 225
ARQ_SESSION_OPEN_ACK = 226
ARQ_SESSION_INFO = 227
ARQ_SESSION_INFO_ACK = 228
ARQ_STOP = 249
BEACON = 250
FEC = 251