mirror of
https://github.com/DJ2LS/FreeDATA
synced 2024-05-14 08:04:33 +00:00
adjusted gear shifting
This commit is contained in:
parent
7eb9fa1dc5
commit
89f61c15fd
1 changed files with 15 additions and 10 deletions
|
@ -216,32 +216,37 @@ class ARQSessionIRS(arq_session.ARQSession):
|
||||||
f"Latest SNR: {latest_snr}, Current Speed Level: {self.speed_level}, Appropriate Speed Level: {appropriate_speed_level}",
|
f"Latest SNR: {latest_snr}, Current Speed Level: {self.speed_level}, Appropriate Speed Level: {appropriate_speed_level}",
|
||||||
isWarning=True)
|
isWarning=True)
|
||||||
|
|
||||||
# Always decode the current mode
|
|
||||||
current_mode = self.get_mode_by_speed_level(self.speed_level).value
|
|
||||||
modes_to_decode[current_mode] = True
|
|
||||||
|
|
||||||
# Initialize shift flags
|
# Initialize shift flags
|
||||||
upshift = False
|
upshift = False
|
||||||
downshift = False
|
downshift = False
|
||||||
|
|
||||||
# Determine if we need to shift
|
# Determine if we need to shift
|
||||||
if appropriate_speed_level > self.speed_level and self.speed_level < len(self.SPEED_LEVEL_DICT) - 1:
|
if appropriate_speed_level > self.speed_level and self.speed_level < len(self.SPEED_LEVEL_DICT) - 1:
|
||||||
# Upshift by one level
|
# Upshift by one level, but remember to listen on the current level as well in case of loosing ACK
|
||||||
|
previous_speed_level = self.speed_level
|
||||||
self.speed_level += 1
|
self.speed_level += 1
|
||||||
upshift = True
|
upshift = True
|
||||||
self.log(f"Upshifting. New speed level: {self.speed_level}", isWarning=True)
|
self.log(f"Upshifting. New speed level: {self.speed_level}", isWarning=True)
|
||||||
elif appropriate_speed_level < self.speed_level and self.speed_level > 0:
|
elif appropriate_speed_level < self.speed_level and self.speed_level > 0:
|
||||||
# Downshift by one level
|
# Downshift by one level, but remember to listen on the current level as well in case of loosing ACK
|
||||||
|
previous_speed_level = self.speed_level
|
||||||
self.speed_level -= 1
|
self.speed_level -= 1
|
||||||
downshift = True
|
downshift = True
|
||||||
self.log(f"Downshifting. New speed level: {self.speed_level}", isWarning=True)
|
self.log(f"Downshifting. New speed level: {self.speed_level}", isWarning=True)
|
||||||
|
else:
|
||||||
|
# No shift needed, set previous to current for correct mode decoding setup
|
||||||
|
previous_speed_level = self.speed_level
|
||||||
|
|
||||||
# Add the new speed level mode to decode, if we have shifted
|
# Decode the current mode
|
||||||
|
current_mode = self.get_mode_by_speed_level(self.speed_level).value
|
||||||
|
modes_to_decode[current_mode] = True
|
||||||
|
|
||||||
|
# Additionally, decode the previous speed level mode if it has changed
|
||||||
if upshift or downshift:
|
if upshift or downshift:
|
||||||
new_mode = self.get_mode_by_speed_level(self.speed_level).value
|
previous_mode = self.get_mode_by_speed_level(previous_speed_level).value
|
||||||
modes_to_decode[new_mode] = True
|
modes_to_decode[previous_mode] = True
|
||||||
|
|
||||||
self.log(f"Modes to Decode: {modes_to_decode}", isWarning=True)
|
self.log(f"Modes to Decode: {modes_to_decode.keys()}", isWarning=True)
|
||||||
# Apply the new decode mode based on the updated speed level
|
# Apply the new decode mode based on the updated speed level
|
||||||
self.modem.demodulator.set_decode_mode(modes_to_decode)
|
self.modem.demodulator.set_decode_mode(modes_to_decode)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue