# HG changeset patch
# User K. Arvanitis <
kosta@alumni.uvic.ca>
# Date 1422243928 28800
# Sun Jan 25 19:45:28 2015 -0800
# Node ID 1e842859ec126d1e7bb336d13ee9c3d68ff1d3b0
# Parent b25606106a9c0cd78f3cc5f602475da64cde081d
[FT-60] Memory Bank Link Scan
Added settings support for memory bank link scan.
Extended bitwise int data element to support xor operator.
Note: The mbs settings are stored in the 16 bits located at
memory location 0x09E in the high order bits.
Note: A bank can be linked even if it contains no memories.
In this case the radio ignores it during the mbl scan.
Bug #675
Bug #1945
diff -r b25606106a9c -r 1e842859ec12 chirp/bitwise.py
--- a/chirp/bitwise.py Wed Jan 21 23:30:19 2015 -0800
+++ b/chirp/bitwise.py Sun Jan 25 19:45:28 2015 -0800
@@ -304,6 +304,9 @@
def __or__(self, val):
return self.get_value() | val
+ def __xor__(self, val):
+ return self.get_value() ^ val
+
def __and__(self, val):
return self.get_value() & val
@@ -325,6 +328,9 @@
def __ror__(self, val):
return val | self.get_value()
+ def __rxor__(self, val):
+ return val ^ self.get_value()
+
def __rmod__(self, val):
return val % self.get_value()
@@ -362,6 +368,10 @@
self.set_value(self.get_value() | val)
return self
+ def __ixor__(self, val):
+ self.set_value(self.get_value() ^ val)
+ return self
+
def __index__(self):
return abs(self)
diff -r b25606106a9c -r 1e842859ec12 chirp/ft60.py
--- a/chirp/ft60.py Wed Jan 21 23:30:19 2015 -0800
+++ b/chirp/ft60.py Sun Jan 25 19:45:28 2015 -0800
@@ -274,10 +274,6 @@
bank = chirp_common.Bank(self, "%i" % (i + 1), "Bank %i" % (i + 1))
bank.index = i
banks.append(bank)
-
- #mbs = (self._radio._memobj.mbs >> i) & 1
- #print "Bank %i: mbs: %i " % (i, mbs)
-
return banks
def add_memory_to_mapping(self, memory, bank):
@@ -402,9 +398,10 @@
eai = RadioSettingGroup("eai", "EAI/EPCS Settings")
switch = RadioSettingGroup("switch", "Switch/Knob Settings")
misc = RadioSettingGroup("misc", "Miscellaneous Settings")
+ mbls = RadioSettingGroup("banks", "Memory Bank Link Scan")
setmode = RadioSettingGroup("top", "Set Mode",
- repeater, ctcss, arts, scan, power, wires, eai, switch, misc)
+ repeater, ctcss, arts, scan, power, wires, eai, switch, misc, mbls)
# APO
opts = [ "OFF" ] + [ "%0.1f" % (x * 0.5) for x in range(1, 24+1) ]
@@ -585,6 +582,20 @@
scan.append( RadioSetting("wx_alt", "Weather Alert Scan",
RadioSettingValueList(opts, opts[_settings.wx_alt])))
+ # MBS
+ for i in range(0, 10):
+ opts = [ "OFF" ] + [ "ON" ]
+ mbs = (self._memobj.mbs >> i) & 1
+ rs = RadioSetting("mbs%i" % i, "Bank %s Scan" % (i + 1),
+ RadioSettingValueList(opts, opts[mbs]))
+ def apply_mbs(s, index):
+ if int(s.value):
+ self._memobj.mbs |= (1 << index)
+ else:
+ self._memobj.mbs &= ~(1 << index);
+ rs.set_apply_callback(apply_mbs, i);
+ mbls.append(rs)
+
return setmode
def set_settings(self, uisettings):
@@ -599,16 +610,16 @@
try:
name = element.get_name()
value = element.value
- obj = getattr(_settings, name)
if element.has_apply_callback():
print "Using apply callback"
element.run_apply_callback()
else:
+ obj = getattr(_settings, name)
setattr(_settings, name, value)
if os.getenv("CHIRP_DEBUG"):
- print "Setting %s: %s <= %s" % (name, obj, element.value)
+ print "Setting %s: %s" % (name, value)
except Exception, e:
print element.get_name()
raise