mirror of
https://github.com/kk7ds/chirp
synced 2026-08-13 17:51:36 -04:00
Fix drivers modifying memory during set_memory()
This has been a warning for a while, so most of the popular drivers are fixed by now. This fixes the two remaining (obvious) ones and adds a test to prevent more from being added. Note that there may be some that still only modify the memory in edge cases that this test doesn't cover.
This commit is contained in:
parent
59f2673c65
commit
8b6366e0e4
4 changed files with 12 additions and 16 deletions
|
|
@ -645,11 +645,7 @@ class Kenwood_P60_Radio(chirp_common.CloneModeRadio, chirp_common.ExperimentalRa
|
|||
self.encode_tone(_mem.tx_tone, txmode, txtone, txpol)
|
||||
self.encode_tone(_mem.rx_tone, rxmode, rxtone, rxpol)
|
||||
|
||||
# power, default power is high, as the low is configurable via a key
|
||||
if mem.power is None:
|
||||
mem.power = POWER_LEVELS[1]
|
||||
|
||||
_mem.power = POWER_LEVELS.index(mem.power)
|
||||
_mem.power = POWER_LEVELS.index(mem.power or POWER_LEVELS[1])
|
||||
|
||||
# skip
|
||||
self.set_scan(mem.number - 1, mem.skip)
|
||||
|
|
|
|||
|
|
@ -1073,12 +1073,7 @@ class Kenwood_Series_60G(chirp_common.CloneModeRadio,
|
|||
except IndexError:
|
||||
_mem.name[i] = "\x20"
|
||||
|
||||
# power
|
||||
# default power is low
|
||||
if mem.power is None:
|
||||
mem.power = POWER_LEVELS[0]
|
||||
|
||||
_mem.power = POWER_LEVELS.index(mem.power)
|
||||
_mem.power = POWER_LEVELS.index(mem.power or POWER_LEVELS[0])
|
||||
|
||||
# wide/marrow
|
||||
_mem.wide = MODES.index(mem.mode)
|
||||
|
|
|
|||
|
|
@ -866,17 +866,18 @@ class VX1RadioCG1(VX1Radio):
|
|||
return mem
|
||||
|
||||
def set_memory(self, mem):
|
||||
if isinstance(mem.number, str):
|
||||
number = mem.number
|
||||
if isinstance(number, str):
|
||||
# Convert string to number
|
||||
mem.number = self.SPECIAL_MEMORIES[mem.number]
|
||||
number = self.SPECIAL_MEMORIES[mem.number]
|
||||
|
||||
# Map CG1 subdevice number to cg1_idx
|
||||
if mem.number <= 72:
|
||||
if number <= 72:
|
||||
# Regular and L/U memories: 1-72 map to cg1_idx 8-79
|
||||
cg1_idx = mem.number + 7
|
||||
cg1_idx = number + 7
|
||||
else:
|
||||
# Home channels: 73-80 map to cg1_idx 0-7
|
||||
cg1_idx = mem.number - 73
|
||||
cg1_idx = number - 73
|
||||
|
||||
# Handle CG1 memory structure directly
|
||||
_mem = self._memobj.cg1_memory[cg1_idx]
|
||||
|
|
|
|||
|
|
@ -37,6 +37,10 @@ class TestCaseEdges(base.DriverTest):
|
|||
n = self.radio.get_memory(m.number)
|
||||
self.assertEqualMem(m, n)
|
||||
|
||||
def test_set_does_not_modify_input(self):
|
||||
m = self.get_mem()
|
||||
self.radio.set_memory(chirp_common.FrozenMemory(m))
|
||||
|
||||
def test_bandedges(self):
|
||||
m = self.get_mem()
|
||||
min_step = min(self.rf.has_tuning_step and
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue