mirror of
https://github.com/kk7ds/chirp.git
synced 2024-09-22 02:57:20 +00:00
Fix erroneous fix in previous fix.
* A single lbcd is the same as a bbcd, they only actually differ when they're in sequences of bytes (duh - _byte_ order) * There were actually two places in the bitwise code that were reversing each other (causing the confusion above), so unify/simplify those bits. * The previous patch introduced an additional check to string setting, which the ict70 driver was violating Fallout of the fallout from #547. Sigh.
This commit is contained in:
parent
b71432fbe7
commit
926ecb1ad5
@ -194,18 +194,16 @@ class arrayDataElement(DataElement):
|
||||
return str(self.__items)
|
||||
|
||||
def __int__(self):
|
||||
if isinstance(self.__items[0], bbcdDataElement):
|
||||
if isinstance(self.__items[0], bcdDataElement):
|
||||
val = 0
|
||||
for i in self.__items:
|
||||
if isinstance(self.__items[0], bbcdDataElement):
|
||||
items = self.__items
|
||||
else:
|
||||
items = reversed(self.__items)
|
||||
for i in items:
|
||||
tens, ones = i.get_value()
|
||||
val = (val * 100) + (tens * 10) + ones
|
||||
return val
|
||||
elif isinstance(self.__items[0], lbcdDataElement):
|
||||
val = 0
|
||||
for i in reversed(self.__items):
|
||||
ones, tens = i.get_value()
|
||||
val = (val * 100) + (tens * 10) + ones
|
||||
return val
|
||||
else:
|
||||
raise ValueError("Cannot coerce this to int")
|
||||
|
||||
@ -472,30 +470,19 @@ class bcdDataElement(DataElement):
|
||||
raise TypeError("Unable to set bcdDataElement from type %s" %
|
||||
type(data))
|
||||
|
||||
class lbcdDataElement(bcdDataElement):
|
||||
_size = 1
|
||||
|
||||
def _get_value(self, data):
|
||||
a = (ord(data) & 0xF0) >> 4
|
||||
b = ord(data) & 0x0F
|
||||
return (b, a)
|
||||
|
||||
def set_value(self, value):
|
||||
value = int("%02i" % value, 16)
|
||||
a = (value & 0xF0) >> 4
|
||||
b = (value & 0x0F)
|
||||
self._data[self._offset] = (b << 4) | a
|
||||
|
||||
class bbcdDataElement(bcdDataElement):
|
||||
_size = 1
|
||||
self._data[self._offset] = int("%02i" % value, 16)
|
||||
|
||||
def _get_value(self, data):
|
||||
a = (ord(data) & 0xF0) >> 4
|
||||
b = ord(data) & 0x0F
|
||||
return (a, b)
|
||||
|
||||
def set_value(self, value):
|
||||
self._data[self._offset] = int("%02i" % value, 16)
|
||||
class lbcdDataElement(bcdDataElement):
|
||||
_size = 1
|
||||
|
||||
class bbcdDataElement(bcdDataElement):
|
||||
_size = 1
|
||||
|
||||
class bitDataElement(intDataElement):
|
||||
_nbits = 0
|
||||
|
@ -77,7 +77,7 @@ class ICT70Bank(icf.IcomBank):
|
||||
|
||||
def set_name(self, name):
|
||||
_bank = self._model._radio._memobj.bank_names[self.index]
|
||||
_bank.name = name.ljust(8)[:8]
|
||||
_bank.name = name.ljust(6)[:6]
|
||||
|
||||
@directory.register
|
||||
class ICT70Radio(icf.IcomCloneModeRadio):
|
||||
|
@ -147,21 +147,17 @@ class TestBitwiseBCDTypes(BaseTest):
|
||||
self.assertEqual(data.get_packed(), ("\x00" * len(_data)))
|
||||
setattr(obj, name, 42)
|
||||
if definition.startswith("b"):
|
||||
expected = "\x00\x42"
|
||||
expected = (len(_data) == 2 and "\x00" or "") + "\x42"
|
||||
else:
|
||||
expected = "\x00\x24"
|
||||
expected = "\x42" + (len(_data) == 2 and "\x00" or "")
|
||||
raw = data.get_packed()
|
||||
if len(_data) == 1:
|
||||
raw = "\x00" + raw
|
||||
elif definition.startswith("l"):
|
||||
expected = "".join(reversed(expected))
|
||||
self.assertEqual(raw, expected)
|
||||
|
||||
def test_bbcd(self):
|
||||
self._test_def("bbcd foo;", "foo", "\x12", 12)
|
||||
|
||||
def test_lbcd(self):
|
||||
self._test_def("lbcd foo;", "foo", "\x12", 21)
|
||||
self._test_def("lbcd foo;", "foo", "\x12", 12)
|
||||
|
||||
def test_bbcd_array(self):
|
||||
self._test_def("bbcd foo[2];", "foo", "\x12\x34", 1234)
|
||||
|
Loading…
Reference in New Issue
Block a user