[chirp_devel] [PATCH] [ft4] fixups in FT65 support [#4787]

DanClemmensen
Tue Mar 5 10:38:13 PST 2019


# HG changeset patch
# User DanClemmensen <DanClemmensen at gmail.com>
# Date 1551810957 28800
#      Tue Mar 05 10:35:57 2019 -0800
# Node ID ba16deb4cf3823ce2f7b9ecd7015a640c4545f71
# Parent  0ab155789d426367ae44f9adf37704bd50bbf336
[ft4] fixups in FT65 support [#4787]

diff -r 0ab155789d42 -r ba16deb4cf38 chirp/drivers/ft4.py
--- a/chirp/drivers/ft4.py	Mon Mar 04 16:37:22 2019 -0800
+++ b/chirp/drivers/ft4.py	Tue Mar 05 10:35:57 2019 -0800
@@ -23,6 +23,7 @@
 """
 import logging
 import struct
+import copy
 from chirp import chirp_common, directory, memmap, bitwise, errors, util
 from chirp.settings import RadioSetting, RadioSettingGroup, \
     RadioSettingValueList, RadioSettingValueString, RadioSettings
@@ -448,6 +449,8 @@
 # these steps encode to 0-9 on all radios, but encoding #2 is disallowed
 # on the US versions (FT-4XR)
 STEP_CODE = [0, 5.0, 6.25, 10.0, 12.5, 15.0, 20.0, 25.0, 50.0, 100.0]
+US_LEGAL_STEPS = list(STEP_CODE)  # copy to pass to UI on US radios
+US_LEGAL_STEPS.remove(6.25)       # euro radios just use STEP_CODE
 
 # Map the radio image sql_type (0-6) to the CHIRP mem values.
 # Yaesu "TSQL" and "DCS" each map to different CHIRP values depending on the
@@ -560,6 +563,17 @@
 EPCS_CODES = [format(flt) for flt in [0] + TONE_MAP[1:]]
 
 
+# allow a child class to add a param to its class
+# description list. used when a specific radio class has
+# a param that is not in the generic list.
+def add_paramdesc(desc_list, group, param):
+    for description in desc_list:
+        groupname, title, parms = description
+        if group == groupname:
+            description[2].append(param)
+            return
+
+
 class YaesuSC35GenericRadio(chirp_common.CloneModeRadio,
                             chirp_common.ExperimentalRadio):
     """
@@ -779,14 +793,6 @@
         ]
     # ----------------end of group_descriptions
 
-    # allow a child class to add a param.
-    def add_paramdesc(self, group, param):
-        for description in self.group_descriptions:
-            groupname, title, parms = description
-            if group == groupname:
-                description[2] += param
-                return
-
     # returns the current values of all the settings in the radio memory image,
     # in the form of a RadioSettings list. Uses the class_group_descs
     # list to create the groups and params. Valuelist scalars are handled
@@ -794,7 +800,7 @@
     def get_settings(self):
         _settings = self._memobj.settings
         groups = RadioSettings()
-        for description in self.group_descriptions:
+        for description in self.class_group_descs:
             groupname, title, parms = description
             group = RadioSettingGroup(groupname, title)
             groups.append(group)
@@ -1052,8 +1058,8 @@
     Pkeys = 2     # number of programmable keys on the FT-4
     namelen = 6   # length of the mem name display on the FT-4 front-panel
     id_str = b'IFT-35R\x00\x00V100\x00\x00'
-    legal_steps = list(STEP_CODE)
-    legal_steps.remove(6.25)       # should not remove if euro version
+    legal_steps = US_LEGAL_STEPS
+    class_group_descs = YaesuSC35GenericRadio.group_descriptions
     # names for the setmode function for the programmable keys. Mode zero means
     # that the key is programmed for a memory not a setmode.
     SETMODES = [
@@ -1089,8 +1095,10 @@
     Pkeys = 4     # number of programmable keys on the FT-65
     namelen = 8   # length of the mem name display on the FT-65 front panel
     id_str = b'IH-420\x00\x00\x00V100\x00\x00'
-    legal_steps = list(STEP_CODE)
-    legal_steps.remove(6.25)       # should not remove if euro version
+    legal_steps = US_LEGAL_STEPS
+    class_group_descs = copy.deepcopy(YaesuSC35GenericRadio.group_descriptions)
+    add_paramdesc(
+        class_group_descs, "misc", ("compander", "Compander", ["OFF", "ON"]))
     # names for the setmode function for the programmable keys. Mode zero means
     # that the key is programmed for a memory not a setmode.
     SETMODES = [
@@ -1103,6 +1111,3 @@
         "step", "tot", "tx pwr", "tx save", "vfo.spl",             # 30-34
         "vox", "wfm.rcv", "wide/nar", "wx alert", "scramble"       # 35-39
         ]
-
-    def __init__(self):
-        self.add_paramdesc("misc", ("compander", "Compander", ["ON", "OFF"]))



More information about the chirp_devel mailing list