[chirp_devel] [PATCH 1 of 2] [KG-UVD1P KG-UV6] Use actual frequency ranges found in radio memory

Marco Filippi IZ3GME
Fri Oct 12 04:46:47 PDT 2012


# HG changeset patch
# User Marco Filippi <iz3gme.marco at gmail.com>
# Date 1350036360 -7200
# Node ID 3ca36590a615c07365bf994fb6a4ea64b22e1365
# Parent  d18da6970f5b9a1b99d230c0ecd3d75e3bddbc30
[KG-UVD1P KG-UV6] Use actual frequency ranges found in radio memory
Implement feature #285

diff --git a/chirp/wouxun.py b/chirp/wouxun.py
--- a/chirp/wouxun.py
+++ b/chirp/wouxun.py
@@ -44,14 +44,14 @@
         div /= 10
     return enc
 
-def decode_freq(bytes):
+def decode_freq(data):
     freq = 0
     shift = 12
     for i in range(0, 4):
         freq *= 10
-        freq += FREQ_ENCODE_TABLE.index( (bytes>>shift) & 0xf )
+        freq += FREQ_ENCODE_TABLE.index( (data>>shift) & 0xf )
         shift -= 4
-        # print "bytes %04x freq %d shift %d" % (bytes, freq, shift)
+        # print "data %04x freq %d shift %d" % (data, freq, shift)
     return freq
 
 @directory.register
@@ -68,6 +68,8 @@
 
     POWER_LEVELS = [chirp_common.PowerLevel("High", watts=5.00),
                     chirp_common.PowerLevel("Low", watts=1.00)]
+                    
+    valid_freq = [(136000000, 175000000), (216000000, 520000000)]
 
 
     _MEM_FORMAT = """
@@ -117,7 +119,7 @@
     def _identify(self):
         """Do the original wouxun identification dance"""
         for _i in range(0, 5):
-            self.pipe.write(_querymodel)
+            self.pipe.write(self._querymodel)
             resp = self.pipe.read(9)
             if len(resp) != 9:
                 print "Got:\n%s" % util.hexprint(resp)
@@ -250,7 +252,7 @@
                     ]
         rf.valid_modes = ["FM", "NFM"]
         rf.valid_power_levels = self.POWER_LEVELS
-        rf.valid_bands = [(136000000, 174000000), (216000000, 520000000)]
+        rf.valid_bands = self.valid_freq
         rf.valid_characters = "".join(self.CHARSET)
         rf.valid_name_length = 6
         rf.valid_duplexes = ["", "+", "-", "split"]
@@ -273,37 +275,43 @@
         top.append(rs)
 
         rs = RadioSetting("vhf_rx_start", "vhf rx start",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(136, 174, 
                                 decode_freq(self._memobj.freq_ranges.vhf_rx_start)))
         freqranges.append(rs)
         rs = RadioSetting("vhf_rx_stop", "vhf rx stop",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(136, 174, 
                                 decode_freq(self._memobj.freq_ranges.vhf_rx_stop)))
         freqranges.append(rs)
         rs = RadioSetting("uhf_rx_start", "uhf rx start",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(216, 520, 
                                 decode_freq(self._memobj.freq_ranges.uhf_rx_start)))
         freqranges.append(rs)
         rs = RadioSetting("uhf_rx_stop", "uhf rx stop",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(216, 520, 
                                 decode_freq(self._memobj.freq_ranges.uhf_rx_stop)))
         freqranges.append(rs)
         rs = RadioSetting("vhf_tx_start", "vhf tx start",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(136, 174, 
                                 decode_freq(self._memobj.freq_ranges.vhf_tx_start)))
         freqranges.append(rs)
         rs = RadioSetting("vhf_tx_stop", "vhf tx stop",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(136, 174, 
                                 decode_freq(self._memobj.freq_ranges.vhf_tx_stop)))
         freqranges.append(rs)
         rs = RadioSetting("uhf_tx_start", "uhf tx start",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(216, 520, 
                                 decode_freq(self._memobj.freq_ranges.uhf_tx_start)))
         freqranges.append(rs)
         rs = RadioSetting("uhf_tx_stop", "uhf tx stop",
-                          RadioSettingValueInteger(0, 700, 
+                          RadioSettingValueInteger(216, 520, 
                                 decode_freq(self._memobj.freq_ranges.uhf_tx_stop)))
         freqranges.append(rs)
+        
+        # tell the decoded ranges to UI
+        self.valid_freq = [(decode_freq(self._memobj.freq_ranges.vhf_rx_start) * 1000000, 
+                        (decode_freq(self._memobj.freq_ranges.vhf_rx_stop) + 1) * 1000000), 
+                        (decode_freq(self._memobj.freq_ranges.uhf_rx_start)  * 1000000,
+                         (decode_freq(self._memobj.freq_ranges.uhf_rx_stop) + 1) * 1000000)]
 
         return top
 
@@ -571,17 +579,13 @@
 
     def get_features(self):
         rf = KGUVD1PRadio.get_features(self)
-        rf.valid_bands = [(136000000, 175000000), (350000000, 471000000)]
         rf.memory_bounds = (1, 199)
         return rf
 
     def get_settings(self):
-        freqranges = RadioSettingGroup("freqranges", "Freq ranges (read only)")
-        top = RadioSettingGroup("top", "All Settings", freqranges)
+        top = KGUVD1PRadio.get_settings(self)
 
-        rs = RadioSetting("menu_available", "Menu Available",
-                          RadioSettingValueBoolean(self._memobj.settings.menu_available))
-        top.append(rs)
+        # add some radio specific settings
         rs = RadioSetting("beep", "Beep",
                           RadioSettingValueBoolean(self._memobj.settings.beep))
         top.append(rs)
@@ -601,52 +605,8 @@
                                             options[self._memobj.settings.sos_ch]))
         top.append(rs)
 
-        rs = RadioSetting("vhf_rx_start", "vhf rx start",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.vhf_rx_start)))
-        freqranges.append(rs)
-        rs = RadioSetting("vhf_rx_stop", "vhf rx stop",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.vhf_rx_stop)))
-        freqranges.append(rs)
-        rs = RadioSetting("uhf_rx_start", "uhf rx start",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.uhf_rx_start)))
-        freqranges.append(rs)
-        rs = RadioSetting("uhf_rx_stop", "uhf rx stop",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.uhf_rx_stop)))
-        freqranges.append(rs)
-        rs = RadioSetting("vhf_tx_start", "vhf tx start",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.vhf_tx_start)))
-        freqranges.append(rs)
-        rs = RadioSetting("vhf_tx_stop", "vhf_tx_stop",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.vhf_tx_stop)))
-        freqranges.append(rs)
-        rs = RadioSetting("uhf_tx_start", "uhf tx start",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.uhf_tx_start)))
-        freqranges.append(rs)
-        rs = RadioSetting("uhf_tx_stop", "uhf tx stop",
-                          RadioSettingValueInteger(0, 700, 
-                                decode_freq(self._memobj.freq_ranges.uhf_tx_stop)))
-        freqranges.append(rs)
-
         return top
 
-    def set_settings(self, settings):
-        for element in settings:
-            if not isinstance(element, RadioSetting):
-                self.set_settings(element)
-                continue
-            try:
-                setattr(self._memobj.settings, element.get_name(), element.value)
-            except Exception, e:
-                print element.get_name()
-                raise
-
     @classmethod
     def match_model(cls, filedata, filename):
         if len(filedata) == 8192 and \



More information about the chirp_devel mailing list