[chirp_devel] [PATCH] [KG-UV6] Expose most of the known settings
Marco Filippi
Thu Jan 3 15:52:41 PST 2013
# HG changeset patch
# User Filippi Marco <iz3gme.marco at gmail.com>
# Date 1357256975 -3600
# Node ID b8db9cd089cc39a4e640999e8c101fbfc6b02690
# Parent 8beda1444865e247bfba48719f93154d0ecc2cbd
[KG-UV6] Expose most of the known settings
Part of feature #335
diff -r 8beda1444865 -r b8db9cd089cc chirp/wouxun.py
--- a/chirp/wouxun.py Wed Jan 02 22:12:24 2013 -0500
+++ b/chirp/wouxun.py Fri Jan 04 00:49:35 2013 +0100
@@ -20,7 +20,7 @@
from chirp import util, chirp_common, bitwise, memmap, errors, directory
from chirp.settings import RadioSetting, RadioSettingGroup, \
RadioSettingValueBoolean, RadioSettingValueList, \
- RadioSettingValueInteger
+ RadioSettingValueInteger, RadioSettingValueString
from chirp.wouxun_common import wipe_memory, do_download, do_upload
FREQ_ENCODE_TABLE = [ 0x7, 0xa, 0x0, 0x9, 0xb, 0x2, 0xe, 0x1, 0x3, 0xf ]
@@ -284,9 +284,17 @@
self._set_freq_settings(element)
else:
try:
- setattr(self._memobj.settings,
- element.get_name(),
- element.value)
+ 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
@@ -527,9 +535,9 @@
#seekto 0x0F00;
struct {
- u8 welcome1[6];
- u8 welcome2[6];
- u8 single_band[6];
+ char welcome1[6];
+ char welcome2[6];
+ char single_band[6];
} strings;
#seekto 0x0F20;
@@ -604,7 +612,7 @@
menu_available:1;
u8 unknown_9[1];
u8 priority_chan;
- u8 vfo_8_cur_chan;
+ u8 vfo_b_cur_chan;
} settings;
#seekto 0x0f60;
@@ -666,25 +674,159 @@
def get_settings(self):
top = KGUVD1PRadio.get_settings(self)
+ def _filter(name):
+ filtered = ""
+ for char in str(name):
+ if char in chirp_common.CHARSET_ASCII:
+ filtered += char
+ else:
+ filtered += " "
+ return filtered
+
# add some radio specific settings
- rs = RadioSetting("beep", "Beep",
- RadioSettingValueBoolean(self._memobj.settings.beep))
- top.append(rs)
options = ["Off", "Welcome", "V bat"]
- rs = RadioSetting("ponmsg", "PONMSG",
+ rs = RadioSetting("ponmsg", "Poweron message",
RadioSettingValueList(options,
options[self._memobj.settings.ponmsg]))
top.append(rs)
+ rs = RadioSetting("strings.welcome1", "Power-On Message 1",
+ RadioSettingValueString(0, 6, _filter(self._memobj.strings.welcome1)))
+ top.append(rs)
+ rs = RadioSetting("strings.welcome2", "Power-On Message 2",
+ RadioSettingValueString(0, 6, _filter(self._memobj.strings.welcome2)))
+ top.append(rs)
+ rs = RadioSetting("strings.single_band", "Single Band Message",
+ RadioSettingValueString(0, 6, _filter(self._memobj.strings.single_band)))
+ top.append(rs)
+ options = ["Channel", "ch/freq","Name", "VFO"]
+ rs = RadioSetting("vfo_a_ch_disp", "VFO A Channel disp mode",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_a_ch_disp]))
+ top.append(rs)
+ rs = RadioSetting("vfo_b_ch_disp", "VFO B Channel disp mode",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.vfo_b_ch_disp]))
+ top.append(rs)
+ # TODO - vfo_a_fr_step
+ # TODO -vfo_b_fr_step:3;
+ rs = RadioSetting("vfo_a_squelch", "VFO A Squelch",
+ RadioSettingValueInteger(0, 9, self._memobj.settings.vfo_a_squelch))
+ top.append(rs)
+ rs = RadioSetting("vfo_b_squelch", "VFO B Squelch",
+ RadioSettingValueInteger(0, 9, self._memobj.settings.vfo_b_squelch))
+ top.append(rs)
+ rs = RadioSetting("vfo_a_cur_chan", "VFO A current channel",
+ RadioSettingValueInteger(1, 199, self._memobj.settings.vfo_a_cur_chan))
+ top.append(rs)
+ rs = RadioSetting("vfo_b_cur_chan", "VFO B current channel",
+ RadioSettingValueInteger(0, 199, self._memobj.settings.vfo_b_cur_chan))
+ top.append(rs)
+ rs = RadioSetting("priority_chan", "Priority channel",
+ RadioSettingValueInteger(0, 199, self._memobj.settings.priority_chan))
+ top.append(rs)
+ rs = RadioSetting("power_save", "Power save",
+ RadioSettingValueBoolean(self._memobj.settings.power_save))
+ top.append(rs)
+ options = ["Off", "Scan", "Lamp", "SOS", "Radio"]
+ rs = RadioSetting("pf1_function", "PF1 Function select",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.pf1_function]))
+ top.append(rs)
+ options = ["Off", "Radio", "fr/ch", "Rpt", "Stopwatch", "Lamp", "SOS"]
+ rs = RadioSetting("pf2_function", "PF2 Function select",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.pf2_function]))
+ top.append(rs)
+ options = ["Off", "Begin", "End", "Both"]
+ rs = RadioSetting("roger_beep", "Roger beep select",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.roger_beep]))
+ top.append(rs)
+ # TODO - transmit_time_out:6;
+ rs = RadioSetting("vox", "Vox",
+ RadioSettingValueInteger(0, 10, self._memobj.settings.vox))
+ top.append(rs)
options = ["Off", "Chinese", "English"]
rs = RadioSetting("voice", "Voice",
RadioSettingValueList(options,
options[self._memobj.settings.voice]))
top.append(rs)
+ rs = RadioSetting("beep", "Beep",
+ RadioSettingValueBoolean(self._memobj.settings.beep))
+ top.append(rs)
+ rs = RadioSetting("ani_id_enable", "ANI id enable",
+ RadioSettingValueBoolean(self._memobj.settings.ani_id_enable))
+ top.append(rs)
+ rs = RadioSetting("ani_id_tx_delay", "ANI id tx delay",
+ RadioSettingValueInteger(0, 30, self._memobj.settings.ani_id_tx_delay))
+ top.append(rs)
+ options = ["Off", "Key", "ANI", "Key+ANI"]
+ rs = RadioSetting("ani_id_sidetone", "ANI id sidetone",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.ani_id_sidetone]))
+ top.append(rs)
+ # TODO tx_time_out_alert:4;
+ options = ["Time", "Carrier", "Search"]
+ rs = RadioSetting("scan_mode", "Scan mode",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.scan_mode]))
+ top.append(rs)
+ rs = RadioSetting("kbd_lock", "Keyboard lock",
+ RadioSettingValueBoolean(self._memobj.settings.kbd_lock))
+ top.append(rs)
+ rs = RadioSetting("auto_lock_kbd", "Auto lock keyboard",
+ RadioSettingValueBoolean(self._memobj.settings.auto_lock_kbd))
+ top.append(rs)
+ rs = RadioSetting("auto_backlight", "Auto backlight",
+ RadioSettingValueBoolean(self._memobj.settings.auto_backlight))
+ top.append(rs)
options = ["CH A", "CH B"]
rs = RadioSetting("sos_ch", "SOS CH",
RadioSettingValueList(options,
options[self._memobj.settings.sos_ch]))
top.append(rs)
+ rs = RadioSetting("stopwatch", "Stopwatch",
+ RadioSettingValueBoolean(self._memobj.settings.stopwatch))
+ top.append(rs)
+ rs = RadioSetting("dual_band_receive", "Dual band receive",
+ RadioSettingValueBoolean(self._memobj.settings.dual_band_receive))
+ top.append(rs)
+ options = ["VFO A", "VFO B"]
+ rs = RadioSetting("current_vfo", "Current VFO",
+ RadioSettingValueList(options,
+ options[self._memobj.settings.current_vfo]))
+ top.append(rs)
+ _pwd = self._memobj.settings.mode_password
+ rs = RadioSetting("mode_password", "Mode password (000000 disabled)",
+ RadioSettingValueInteger(0, 9, _pwd[0]),
+ RadioSettingValueInteger(0, 9, _pwd[1]),
+ RadioSettingValueInteger(0, 9, _pwd[2]),
+ RadioSettingValueInteger(0, 9, _pwd[3]),
+ RadioSettingValueInteger(0, 9, _pwd[4]),
+ RadioSettingValueInteger(0, 9, _pwd[5]))
+ top.append(rs)
+ _pwd = self._memobj.settings.reset_password
+ rs = RadioSetting("reset_password", "Reset password (000000 disabled)",
+ RadioSettingValueInteger(0, 9, _pwd[0]),
+ RadioSettingValueInteger(0, 9, _pwd[1]),
+ RadioSettingValueInteger(0, 9, _pwd[2]),
+ RadioSettingValueInteger(0, 9, _pwd[3]),
+ RadioSettingValueInteger(0, 9, _pwd[4]),
+ RadioSettingValueInteger(0, 9, _pwd[5]))
+ top.append(rs)
+ try:
+ _ani = self._memobj.settings.ani_id_content
+ rs = RadioSetting("ani_id_content", "ANI Code",
+ RadioSettingValueInteger(0, 9, _ani[0]),
+ RadioSettingValueInteger(0, 9, _ani[1]),
+ RadioSettingValueInteger(0, 9, _ani[2]),
+ RadioSettingValueInteger(0, 9, _ani[3]),
+ RadioSettingValueInteger(0, 9, _ani[4]),
+ RadioSettingValueInteger(0, 9, _ani[5]))
+ top.append(rs)
+ except Exception:
+ print ("Your ANI code is not five digits, which is not currently"
+ " supported in CHIRP.")
return top
More information about the chirp_devel
mailing list