mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
added version control to arq
This commit is contained in:
parent
0dacdb2e4f
commit
f81c04aea7
4 changed files with 12 additions and 3 deletions
|
@ -41,6 +41,8 @@ class ARQSession:
|
|||
self.states = state_manager
|
||||
self.states.setARQ(True)
|
||||
|
||||
self.protocol_version = 1
|
||||
|
||||
self.snr = []
|
||||
|
||||
self.dxcall = dxcall
|
||||
|
|
|
@ -109,6 +109,11 @@ class ARQSessionIRS(arq_session.ARQSession):
|
|||
|
||||
self.event_manager.send_arq_session_new(
|
||||
False, self.id, self.dxcall, 0, self.state.name)
|
||||
|
||||
if open_frame['protocol_version'] not in [self.protocol_version]:
|
||||
self.abort = True
|
||||
self.log(f"Protocol version mismatch! Setting disconnect flag!", isWarning=True)
|
||||
|
||||
ack_frame = self.frame_factory.build_arq_session_open_ack(
|
||||
self.id,
|
||||
self.dxcall,
|
||||
|
|
|
@ -110,7 +110,7 @@ class ARQSessionISS(arq_session.ARQSession):
|
|||
maximum_bandwidth = self.config['MODEM']['maximum_bandwidth']
|
||||
self.event_manager.send_arq_session_new(
|
||||
True, self.id, self.dxcall, self.total_length, self.state.name)
|
||||
session_open_frame = self.frame_factory.build_arq_session_open(self.dxcall, self.id, maximum_bandwidth)
|
||||
session_open_frame = self.frame_factory.build_arq_session_open(self.dxcall, self.id, maximum_bandwidth, self.protocol_version)
|
||||
self.launch_twr(session_open_frame, self.TIMEOUT_CONNECT_ACK, self.RETRIES_CONNECT, mode=FREEDV_MODE.signalling)
|
||||
self.set_state(ISS_State.OPEN_SENT)
|
||||
|
||||
|
|
|
@ -81,6 +81,7 @@ class DataFrameFactory:
|
|||
"origin": 6,
|
||||
"session_id": 1,
|
||||
"maximum_bandwidth": 2,
|
||||
"protocol_version" : 1
|
||||
}
|
||||
|
||||
self.template_list[FR_TYPE.ARQ_SESSION_OPEN_ACK.value] = {
|
||||
|
@ -266,7 +267,7 @@ class DataFrameFactory:
|
|||
|
||||
elif key in ["session_id", "speed_level",
|
||||
"frames_per_burst", "version",
|
||||
"offset", "total_length", "state", "type", "maximum_bandwidth"]:
|
||||
"offset", "total_length", "state", "type", "maximum_bandwidth", "protocol_version"]:
|
||||
extracted_data[key] = int.from_bytes(data, 'big')
|
||||
|
||||
elif key in ["snr"]:
|
||||
|
@ -375,12 +376,13 @@ class DataFrameFactory:
|
|||
test_frame[:1] = bytes([FR_TYPE.TEST_FRAME.value])
|
||||
return test_frame
|
||||
|
||||
def build_arq_session_open(self, destination, session_id, maximum_bandwidth):
|
||||
def build_arq_session_open(self, destination, session_id, maximum_bandwidth, protocol_version):
|
||||
payload = {
|
||||
"destination_crc": helpers.get_crc_24(destination),
|
||||
"origin": helpers.callsign_to_bytes(self.myfullcall),
|
||||
"session_id": session_id.to_bytes(1, 'big'),
|
||||
"maximum_bandwidth": maximum_bandwidth.to_bytes(2, 'big'),
|
||||
"protocol_version": protocol_version.to_bytes(1, 'big'),
|
||||
}
|
||||
return self.construct(FR_TYPE.ARQ_SESSION_OPEN, payload)
|
||||
|
||||
|
|
Loading…
Reference in a new issue