adjusted gear shifting

This commit is contained in:
DJ2LS 2024-02-22 15:46:15 +01:00
parent 7eb9fa1dc5
commit 89f61c15fd

View file

@ -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)