[chirp_devel] [PATCH] [UV-5R] Add support for editing the 15 PTT ID Codes

Jim Unroe
Sat Feb 16 12:13:11 PST 2013


# HG changeset patch
# User Jim Unroe <rock.unroe at gmail.com>
# Date 1360457827 18000
# Node ID 3b1211af0f236820d178eaed95c937cc8cb76d62
# Parent  b7455d66266c3572eed32c09195cd8315aed6e18
[UV-5R] Add support for editing the 15 PTT ID Codes
add supporting structure for PTT ID Codes
add DTMF Settings tab
add PTT ID Code 1-15 settings
#539

diff -r b7455d66266c -r 3b1211af0f23 chirp/uv5r.py
--- a/chirp/uv5r.py	Sat Feb 16 10:04:30 2013 -0800
+++ b/chirp/uv5r.py	Sat Feb 09 19:57:07 2013 -0500
@@ -43,6 +43,12 @@
      pttid:2;
 } memory[128];
 
+#seekto 0x0B08;
+struct {
+  u8 code[5];
+  u8 unused[11];
+} pttid[15];
+
 #seekto 0x0CB2;
 struct {
   u8 code[5];
@@ -983,6 +989,26 @@
                                                     STEP_LIST[self._memobj.vfob.step]))
             workmode.append(rs)
 
+        dtmf = RadioSettingGroup("dtmf", "DTMF Settings")
+        group.append(dtmf)
+
+        for i in range(0, 15):
+            _codeobj = self._memobj.pttid[i].code
+            _code = "".join(["%x" % x for x in _codeobj if int(x) != 0xFF])
+            val = RadioSettingValueString(0, 5, _code, False)
+            val.set_charset("0123456789")
+            rs = RadioSetting("pttid/%i.code" % i, "PTT ID Code %i" % (i + 1), val)
+            def apply_code(setting, obj):
+                code = []
+                for j in range(0, 5):
+                    try:
+                        code.append(int(str(setting.value)[j]))
+                    except IndexError:
+                        code.append(0xFF)
+                obj.code = code
+            rs.set_apply_callback(apply_code, self._memobj.pttid[i])
+            dtmf.append(rs)
+
         return group
 
     def get_settings(self):
@@ -1001,17 +1027,28 @@
                 self.set_settings(element)
                 continue
             try:
-                if "." in element.get_name():
-                    bits = element.get_name().split(".")
+                name = element.get_name()
+                if "." in name:
+                    bits = name.split(".")
                     obj = self._memobj
                     for bit in bits[:-1]:
-                        obj = getattr(obj, bit)
+                        if "/" in bit:
+                            bit, index = bit.split("/", 1)
+                            index = int(index)
+                            obj = getattr(obj, bit)[index]
+                        else:
+                            obj = getattr(obj, bit)
                     setting = bits[-1]
                 else:
                     obj = _settings
                     setting = element.get_name()
-                print "Setting %s = %s" % (setting, element.value)
-                setattr(obj, setting, element.value)
+
+                if element.has_apply_callback():
+                    print "Using apply callback"
+                    element.run_apply_callback()
+                else:
+                    print "Setting %s = %s" % (setting, element.value)
+                    setattr(obj, setting, element.value)
             except Exception, e:
                 print element.get_name()
                 raise



More information about the chirp_devel mailing list