[chirp_devel] [PATCH] [uv5r] Add VFO Frequency Presets to Work Mode Tab

Jim Unroe
Mon Feb 18 18:41:27 PST 2013


# HG changeset patch
# User Jim Unroe <rock.unroe at gmail.com>
# Date 1361241206 18000
# Node ID 5591bd452af99de3a5469b3274f5057305ffd313
# Parent  5528bdcdc34e5966d5b7f0dbb6859f700b5f9366
[uv5r] Add VFO Frequency Presets to Work Mode Tab
Band presets were also removed
(they are now automatically set based on the VFO preset frequency)
#467

diff -r 5528bdcdc34e -r 5591bd452af9 chirp/uv5r.py
--- a/chirp/uv5r.py	Sun Feb 17 18:58:44 2013 -0800
+++ b/chirp/uv5r.py	Mon Feb 18 21:33:26 2013 -0500
@@ -20,7 +20,8 @@
 from chirp import bitwise
 from chirp.settings import RadioSetting, RadioSettingGroup, \
     RadioSettingValueInteger, RadioSettingValueList, \
-    RadioSettingValueBoolean, RadioSettingValueString
+    RadioSettingValueBoolean, RadioSettingValueString, \
+    InvalidValueError
 
 MEM_FORMAT = """
 #seekto 0x0008;
@@ -914,15 +915,37 @@
                           RadioSettingValueInteger(0, 127, _mrcnb))
         workmode.append(rs)
 
-        options = ["VHF", "UHF"]
-        rs = RadioSetting("vfoa.band", "VFO A Band",
-                          RadioSettingValueList(options,
-                                                options[self._memobj.vfoa.band]))
+        def convert_bytes_to_freq(bytes):
+           real_freq = 0
+           for byte in bytes:
+               real_freq = (real_freq * 10) + byte
+           return chirp_common.format_freq(real_freq * 10)
+
+        def my_validate(value):
+            value = chirp_common.parse_freq(value)
+            if 17400000 <= value and value < 40000000:
+                raise InvalidValueError("Can't be between 174.00000-400.00000")
+            return chirp_common.format_freq(value)
+
+        def apply_freq(setting, obj):
+            value = chirp_common.parse_freq(str(setting.value)) / 10
+            obj.band = value >= 40000000
+            for i in range(7, -1, -1):
+                obj.freq[i] = value % 10
+                value /= 10
+
+        val1a = RadioSettingValueString(0, 10,
+            convert_bytes_to_freq(self._memobj.vfoa.freq))
+        val1a.set_validate_callback(my_validate)
+        rs = RadioSetting("vfoa.freq", "VFO A Frequency", val1a)
+        rs.set_apply_callback(apply_freq, self._memobj.vfoa)
         workmode.append(rs)
 
-        rs = RadioSetting("vfob.band", "VFO B Band",
-                          RadioSettingValueList(options,
-                                                options[self._memobj.vfob.band]))
+        val1b = RadioSettingValueString(0, 10,
+            convert_bytes_to_freq(self._memobj.vfob.freq))
+        val1b.set_validate_callback(my_validate)
+        rs = RadioSetting("vfob.freq", "VFO B Frequency", val1b)
+        rs.set_apply_callback(apply_freq, self._memobj.vfob)
         workmode.append(rs)
 
         options = ["High", "Low"]



More information about the chirp_devel mailing list