[chirp_devel] [PATCH] [RT21] Add PF1 Function Key Setting
Jim Unroe
Sat Dec 17 18:32:48 PST 2016
# HG changeset patch
# User Jim Unroe <rock.unroe at gmail.com>
# Date 1482027538 18000
# Node ID 19790fa1d51a5183b7dd6758c9fbb6c5d5a0bd4b
# Parent 65d5776cef31d2f06101ff2e5463fadbd705eab1
[RT21] Add PF1 Function Key Setting
This patch adds the ability to set the PF1 key function of the Retevis RT21.
#4139
diff -r 65d5776cef31 -r 19790fa1d51a chirp/drivers/retevis_rt21.py
--- a/chirp/drivers/retevis_rt21.py Sat Dec 17 21:10:10 2016 -0500
+++ b/chirp/drivers/retevis_rt21.py Sat Dec 17 21:18:58 2016 -0500
@@ -46,6 +46,12 @@
scramble_type2:4;
} memory[16];
+#seekto 0x011D;
+struct {
+ u8 unused:4,
+ pf1:4; // Programmable Function Key 1
+} keys;
+
#seekto 0x012C;
struct {
u8 use_scramble; // Scramble Enable
@@ -82,6 +88,8 @@
TOTALERT_LIST = ["Off"] + ["%s seconds" % x for x in range(1, 11)]
VOICE_LIST = ["Off", "Chinese", "English"]
VOX_LIST = ["OFF"] + ["%s" % x for x in range(1, 17)]
+PF1_CHOICES = ["None", "Monitor", "Scan", "Scramble", "Alarm"]
+PF1_VALUES = [0x0F, 0x04, 0x06, 0x08, 0x0C]
SETTING_LISTS = {
"bcl": BCL_LIST,
@@ -455,6 +463,7 @@
setattr(_mem, setting.get_name(), setting.value)
def get_settings(self):
+ _keys = self._memobj.keys
_settings = self._memobj.settings
basic = RadioSettingGroup("basic", "Basic Settings")
top = RadioSettings(basic)
@@ -497,6 +506,23 @@
VOX_LIST, VOX_LIST[_settings.vox]))
basic.append(rs)
+ def apply_pf1_listvalue(setting, obj):
+ LOG.debug("Setting value: "+ str(setting.value) + " from list")
+ val = str(setting.value)
+ index = PF1_CHOICES.index(val)
+ val = PF1_VALUES[index]
+ obj.set_value(val)
+
+ if _keys.pf1 in PF1_VALUES:
+ idx = PF1_VALUES.index(_keys.pf1)
+ else:
+ idx = LIST_DTMF_SPECIAL_VALUES.index(0x04)
+ rs = RadioSetting("keys.pf1", "PF1 Key Function",
+ RadioSettingValueList(PF1_CHOICES,
+ PF1_CHOICES[idx]))
+ rs.set_apply_callback(apply_pf1_listvalue, _keys.pf1)
+ basic.append(rs)
+
return top
def set_settings(self, settings):
@@ -516,7 +542,10 @@
obj = self._memobj.settings
setting = element.get_name()
- if setting == "tot":
+ if element.has_apply_callback():
+ LOG.debug("Using apply callback")
+ element.run_apply_callback()
+ elif setting == "tot":
setattr(obj, setting, int(element.value) + 1)
elif element.value.get_mutable():
LOG.debug("Setting %s = %s" % (setting, element.value))
More information about the chirp_devel
mailing list