[chirp_devel] [PATCH] [ic-v86] Zero fill mem object prior to writing new memories. Fixes #8601
# HG changeset patch # User Kosta A. ve7kcy@gmail.com # Date 1610840371 28800 # Sat Jan 16 15:39:31 2021 -0800 # Node ID 51bb5eb2717fdf05665cd3cfd0ded0f63c375007 # Parent 46b5fd1c386f81d6761bfb68c54ca34c15171ca3 [ic-v86] Zero fill mem object prior to writing new memories. Fixes #8601.
diff --git a/chirp/drivers/icv86.py b/chirp/drivers/icv86.py --- a/chirp/drivers/icv86.py +++ b/chirp/drivers/icv86.py @@ -65,13 +65,17 @@ mode:1, rev:1, duplex:2, - reserved7:2; - u8 reserved8:2, + reserved6:2; + u8 reserved7:2, dtcs_polarity:2, tmode:4; - u8 reserved9:6, + u8 reserved8:5, + tx:1, power:2; - u8 reserved10[4]; + u8 reserved9; + u8 reserved10; + u8 reserved11; + u8 reserved12; } memory[207];
""" @@ -251,6 +255,11 @@ RadioSettingValueBoolean(bool(_mem.rev))) rev.set_doc("Reverse duplex") mem.extra.append(rev) + + tx = RadioSetting("tx", "Tx permission", + RadioSettingValueBoolean(bool(_mem.tx))) + tx.set_doc("Tx permission") + mem.extra.append(tx)
if _skp is not None: mem.skip = (_skp & bit) and "S" or "" @@ -271,6 +280,39 @@
return self._get_memory(number)
+ def _fill_memory(self, number): + _mem = self._memobj.memory[number] + + assert(_mem) + + # zero-fill + _mem.freq = 146010000 + _mem.offset = 146010000 + _mem.name = str("").ljust(5) + _mem.reserved1 = 0x0 + _mem.rtone = 0x8 + _mem.reserved2 = 0x0 + _mem.ctone = 0x8 + _mem.reserved3 = 0x0 + _mem.dtcs = 0x0 + _mem.reserved4 = 0x0 + _mem.tuning_step = 0x0 + _mem.reserved5 = 0x0 + _mem.mode = 0x0 + _mem.rev = 0x0 + _mem.duplex = 0x0 + _mem.reserved6 = 0x0 + _mem.reserved7 = 0x0 + _mem.dtcs_polarity = 0x0 + _mem.tmode = 0x0 + _mem.tx = 0x1 + _mem.reserved8 = 0x0 + _mem.power = 0x0 + _mem.reserved9 = 0x0 + _mem.reserved10 = 0x0 + _mem.reserved11 = 0x0 + _mem.reserved12 = 0x0 + def _set_memory(self, mem): bit = 1 << (mem.number % 8) byte = int(mem.number / 8) @@ -282,26 +324,13 @@ assert(_mem)
if mem.empty: - # Non zero-fill - _mem.freq = 146010000 - _mem.offset = 146010000 - _mem.name = str("").ljust(5) - _mem.rtone = 0x8 - _mem.ctone = 0x8 - _mem.dtcs = 0x0 - _mem.tuning_step = 0x0 - _mem.mode = 0x0 - _mem.duplex = 0x0 - _mem.dtcs_polarity = 0x0 - _mem.tmode = 0x0 - _mem.power = 0x0 - + self._fill_memory(mem.number) if _usd is not None: _usd |= bit return
- if _usd is not None: - _usd &= ~bit + if _usd is None or (_usd & bit): + self._fill_memory(mem.number)
_mem.freq = mem.freq _mem.offset = int(mem.offset) @@ -319,6 +348,9 @@ for setting in mem.extra: setattr(_mem, setting.get_name(), setting.value)
+ if _usd is not None: + _usd &= ~bit + if _skp is not None: if mem.skip == "S": _skp |= bit
participants (1)
-
Kosta A.