[chirp_devel] [PATCH] [UV-3R] Add Broadcast FM Presets

Jim Unroe
Tue Nov 26 13:49:40 PST 2013


# HG changeset patch
# User Jim Unroe <rock.unroe at gmail.com>
# Date 1385501737 18000
# Node ID 6b57fe93002d257ddda119a85aff3edff008eed1
# Parent  fac62ed0236be2ae124c5a5a05e8370ff46c119c
[UV-3R] Add Broadcast FM Presets
expose fm preset fields in memmap
add FM Radio Presets tab
add fm radio presets
add other related support
related to #1267

diff -r fac62ed0236b -r 6b57fe93002d chirp/baofeng_uv3r.py
--- a/chirp/baofeng_uv3r.py	Tue Nov 26 16:18:23 2013 -0500
+++ b/chirp/baofeng_uv3r.py	Tue Nov 26 16:35:37 2013 -0500
@@ -123,6 +123,9 @@
   u8 pri_ch;
 } settings;
 
+#seekto 0x07E0;
+u16 fm_presets[16];
+
 #seekto 0x0810;
 struct {
   lbcd rx_freq[4];
@@ -432,14 +435,32 @@
         rs.set_apply_callback(apply_limit, self._memobj.limits)
         basic.append(rs)
 
+        fm_preset = RadioSettingGroup("fm_preset", "FM Radio Presets")
+        group.append(fm_preset)
+
+        for i in range(0, 16):
+            if self._memobj.fm_presets[i] < 0x01AF:
+                used = True
+                preset = self._memobj.fm_presets[i] / 10.0 + 65
+            else:
+                used = False
+                preset = 65
+            rs = RadioSetting("fm_presets_%1i" % i, "FM Preset %i" % (i + 1),
+                          RadioSettingValueBoolean(used),
+                          RadioSettingValueFloat(65, 108, preset, 0.1, 1))
+            fm_preset.append(rs)
+
         return group
 
     def set_settings(self, settings):
         _settings = self._memobj.settings
         for element in settings:
             if not isinstance(element, RadioSetting):
-                self.set_settings(element)
-                continue
+                if element.get_name() == "fm_preset" :
+                    self._set_fm_preset(element)
+                else:
+                    self.set_settings(element)
+                    continue
             else:
                 try:
                     name = element.get_name()
@@ -468,6 +489,23 @@
                     print element.get_name()
                     raise
 
+    def _set_fm_preset(self, settings):
+        for element in settings:
+            try:
+                index = (int(element.get_name().split("_")[-1]))
+                val = element.value
+                if val[0].get_value():
+                    value = int(val[1].get_value() * 10 - 650)
+                else:
+                    value = 0x01AF
+                print "Setting fm_presets[%1i] = %s" % (index, value)
+                setting = self._memobj.fm_presets
+                setting[index] = value
+            except Exception, e:
+                print element.get_name()
+                raise
+
+
     @classmethod
     def match_model(cls, filedata, filename):
         return len(filedata) == 3648



More information about the chirp_devel mailing list