[chirp_devel] [PATCH 1 of 3] [id31] Backport ID-51 mode logic to ID-31. Related to #553

Tom Hayward
Sun Feb 24 22:04:38 PST 2013


# HG changeset patch
# User Tom Hayward <tom at tomh.us>
# Date 1361772240 28800
# Node ID 84a6dddebc9f88bac90afcd09083fb1665a7ffb4
# Parent  0769d077d73a547e8f0d906f7c78ac8218658f0f
[id31] Backport ID-51 mode logic to ID-31. Related to #553

diff -r 0769d077d73a -r 84a6dddebc9f chirp/id31.py
--- a/chirp/id31.py	Sun Feb 24 10:06:52 2013 -0500
+++ b/chirp/id31.py	Sun Feb 24 22:04:00 2013 -0800
@@ -22,9 +22,7 @@
   u16 rtone:6,
       ctone:6,
       unknown2:1,
-      is_dv:1,
-      unknown2_0:1,
-      is_narrow:1;
+      mode:3;
   u8 dtcs;
   u8 tune_step:4,
      unknown5:4;
@@ -166,6 +164,8 @@
 
     _ranges = [(0x00000, 0x15500, 32)]
 
+    MODES = {0: "FM", 1: "NFM", 5: "DV"}
+
     def _get_bank(self, loc):
         _bank = self._memobj.banks[loc]
         if _bank.bank == 0xFF:
@@ -198,7 +198,7 @@
         rf.has_bank_names = True
         rf.valid_tmodes = list(TMODES)
         rf.valid_tuning_steps = sorted(list(TUNING_STEPS))
-        rf.valid_modes = ["FM", "NFM", "DV"]
+        rf.valid_modes = self.MODES.values()
         rf.valid_skips = ["", "S", "P"]
         rf.valid_characters = chirp_common.CHARSET_ASCII
         rf.valid_name_length = 16
@@ -218,7 +218,7 @@
 
         bit = (1 << (number % 8))
 
-        if _mem.is_dv:
+        if self.MODES[int(_mem.mode)] == "DV":
             mem = chirp_common.DVMemory()
         else:
             mem = chirp_common.Memory()
@@ -237,16 +237,12 @@
         mem.dtcs = chirp_common.DTCS_CODES[_mem.dtcs]
         mem.dtcs_polarity = DTCS_POLARITY[_mem.dtcs_polarity]
         mem.tuning_step = TUNING_STEPS[_mem.tune_step]
+        mem.mode = self.MODES[int(_mem.mode)]
 
-        if _mem.is_dv:
-            mem.mode = "DV"
+        if mem.mode == "DV":
             mem.dv_urcall = _decode_call(_mem.urcall).rstrip()
             mem.dv_rpt1call = _decode_call(_mem.rpt1call).rstrip()
             mem.dv_rpt2call = _decode_call(_mem.rpt2call).rstrip()
-        elif _mem.is_narrow:
-            mem.mode = "NFM"
-        else:
-            mem.mode = "FM"
 
         if _psk & bit:
             mem.skip = "P"
@@ -279,9 +275,8 @@
         _mem.dtcs = chirp_common.DTCS_CODES.index(memory.dtcs)
         _mem.dtcs_polarity = DTCS_POLARITY.index(memory.dtcs_polarity)
         _mem.tune_step = TUNING_STEPS.index(memory.tuning_step)
-        
-        _mem.is_narrow = memory.mode in ["NFM", "DV"]
-        _mem.is_dv = memory.mode == "DV"
+        _mem.mode = next(i for i, mode in self.MODES.items() \
+                            if mode == memory.mode)
 
         if isinstance(memory, chirp_common.DVMemory):
             _mem.urcall = _encode_call(memory.dv_urcall.ljust(8))



More information about the chirp_devel mailing list