From 330720b15c7652c3977ec967766e1b2d621be6a6 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Tue, 7 Nov 2023 17:38:33 -0800 Subject: [PATCH] vx8: Fix raw bytestring handling (et al) This also fixes some other python3isms that apparently never got addressed originally. --- chirp/drivers/vx8.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/chirp/drivers/vx8.py b/chirp/drivers/vx8.py index 91608472c..ee93fbffe 100644 --- a/chirp/drivers/vx8.py +++ b/chirp/drivers/vx8.py @@ -496,7 +496,7 @@ def get_memory_mappings(self, memory): def _wipe_memory(mem): - mem.set_raw("\x00" * (mem.size() // 8)) + mem.set_raw(b"\x00" * (mem.size() // 8)) @directory.register @@ -629,7 +629,7 @@ def _checksums(self): @staticmethod def _add_ff_pad(val, length): - return val.ljust(length, "\xFF")[:length] + return val.ljust(length, b"\xFF")[:length] @classmethod def _strip_ff_pads(cls, messages): @@ -720,7 +720,7 @@ def set_memory(self, mem): _mem.power = 0 label = "".join([chr(CHARSET.index(x)) for x in mem.name.rstrip()]) - _mem.label = self._add_ff_pad(label, 16) + _mem.label = self._add_ff_pad(label.encode('ascii'), 16) # We only speak English here in chirpville _mem.charsetbits[0] = 0x00 _mem.charsetbits[1] = 0x00 @@ -1338,7 +1338,7 @@ def _apply_callsign(cls, callsign, obj, default_ssid=None): ssid = int(ssid) % 16 except ValueError: ssid = default_ssid - setattr(obj, "callsign", cls._add_ff_pad(callsign, 6)) + setattr(obj, "callsign", cls._add_ff_pad(callsign.encode('ascii'), 6)) if ssid is not None: setattr(obj, "ssid", ssid) @@ -1380,8 +1380,8 @@ def apply_digi_path(self, setting, obj): def apply_ff_padded_string(cls, setting, obj): # FF pad. val = setting.value.get_value() - max_len = getattr(obj, "padded_string").size() / 8 - val = str(val).rstrip() + max_len = getattr(obj, "padded_string").size() // 8 + val = str(val).rstrip().encode('ascii') setattr(obj, "padded_string", cls._add_ff_pad(val, max_len)) @classmethod @@ -1440,12 +1440,9 @@ def set_settings(self, settings): def apply_ff_padded_yaesu(cls, setting, obj): # FF pad yaesus custom string format. rawval = setting.value.get_value() - max_len = getattr(obj, "padded_yaesu").size() / 8 - rawval = str(rawval).rstrip() - val = [CHARSET.index(x) for x in rawval] - for x in range(len(val), max_len): - val.append(0xFF) - obj.padded_yaesu = val + max_len = getattr(obj, "padded_yaesu").size() // 8 + rawval = str(rawval).rstrip().translate(CHARSET).encode('ascii') + obj.padded_yaesu = list(rawval.ljust(max_len, b'\xFF')[0:max_len]) def apply_volume(cls, setting, vfo): val = setting.value.get_value()