[chirp_devel] [PATCH] [kg-uv6] support fm presets in settings
Marco Filippi IZ3GME
Wed Sep 4 07:28:36 PDT 2013
# HG changeset patch
# User Marco Filippi <iz3gme.marco at gmail.com>
# Date 1378304892 -7200
# Node ID 58c9c182fd3b13b7cdb644961eb343674f927f89
# Parent c9fba5fb96fc6342df68228e6c98e4f1743c0baf
[kg-uv6] support fm presets in settings
implement #1109
diff --git a/chirp/wouxun.py b/chirp/wouxun.py
--- a/chirp/wouxun.py
+++ b/chirp/wouxun.py
@@ -20,7 +20,8 @@
from chirp import util, chirp_common, bitwise, memmap, errors, directory
from chirp.settings import RadioSetting, RadioSettingGroup, \
RadioSettingValueBoolean, RadioSettingValueList, \
- RadioSettingValueInteger, RadioSettingValueString
+ RadioSettingValueInteger, RadioSettingValueString, \
+ RadioSettingValueFloat
from chirp.wouxun_common import wipe_memory, do_download, do_upload
FREQ_ENCODE_TABLE = [ 0x7, 0xa, 0x0, 0x9, 0xb, 0x2, 0xe, 0x1, 0x3, 0xf ]
@@ -686,7 +687,8 @@
def get_settings(self):
freqranges = RadioSettingGroup("freqranges", "Freq ranges")
- top = RadioSettingGroup("top", "All Settings", freqranges)
+ fm_preset = RadioSettingGroup("fm_preset", "FM Presets")
+ top = RadioSettingGroup("top", "All Settings", freqranges, fm_preset)
rs = RadioSetting("menu_available", "Menu Available",
RadioSettingValueBoolean(
@@ -914,9 +916,76 @@
except Exception:
print ("Your ANI code is not six digits, which is not currently"
" supported in CHIRP.")
+
+ for i in range(0, 9):
+ if self._memobj.fm_presets_0[i] != 0xFFFF:
+ rs = RadioSetting("fm_presets_0_%1i" % i, "Bank 0 Location %i" % i,
+ RadioSettingValueBoolean(True),
+ RadioSettingValueFloat(76, 108, self._memobj.fm_presets_0[i]/10.0+76, 0.1, 1))
+ else:
+ rs = RadioSetting("fm_presets_0_%1i" % i, "Bank 0 Location %i" % i,
+ RadioSettingValueBoolean(False),
+ RadioSettingValueFloat(76, 108, 76, 0.1, 1))
+ fm_preset.append(rs)
+ for i in range(0, 9):
+ if self._memobj.fm_presets_1[i] != 0xFFFF:
+ rs = RadioSetting("fm_presets_1_%1i" % i, "Bank 1 Location %i" % i,
+ RadioSettingValueBoolean(True),
+ RadioSettingValueFloat(76, 108, self._memobj.fm_presets_1[i]/10.0+76, 0.1, 1))
+ else:
+ rs = RadioSetting("fm_presets_1_%1i" % i, "Bank 1 Location %i" % i,
+ RadioSettingValueBoolean(False),
+ RadioSettingValueFloat(76, 108, 76, 0.1, 1))
+ fm_preset.append(rs)
return top
+ def set_settings(self, settings):
+ for element in settings:
+ if not isinstance(element, RadioSetting):
+ if element.get_name() == "freqranges" :
+ self._set_freq_settings(element)
+ elif element.get_name() == "fm_preset" :
+ self._set_fm_preset(element)
+ else:
+ self.set_settings(element)
+ else:
+ try:
+ if "." in element.get_name():
+ bits = element.get_name().split(".")
+ obj = self._memobj
+ for bit in bits[:-1]:
+ obj = getattr(obj, bit)
+ setting = bits[-1]
+ else:
+ obj = self._memobj.settings
+ setting = element.get_name()
+ print "Setting %s = %s" % (setting, element.value)
+ setattr(obj, setting, element.value)
+ except Exception, e:
+ print element.get_name()
+ raise
+
+ def _set_fm_preset(self, settings):
+ obj = self._memobj
+ for element in settings:
+ try:
+ (bank, index) = (int(a) for a in element.get_name().split("_")[-2:])
+ val = element.value
+ if val[0].get_value():
+ value = int(val[1].get_value()*10-760)
+ else:
+ value = 0xffff
+ print "Setting fm_presets_%1i[%1i] = %s" % (bank, index, value)
+ if bank == 0:
+ setting = self._memobj.fm_presets_0
+ else:
+ setting = self._memobj.fm_presets_1
+ setting[index] = value
+ except Exception, e:
+ print element.get_name()
+ raise
+
@classmethod
def match_model(cls, filedata, filename):
if len(filedata) == 8192 and \
More information about the chirp_devel
mailing list