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

Tom Hayward
Thu Feb 21 13:58:35 PST 2013


# HG changeset patch
# User Tom Hayward <tom at tomh.us>
# Date 1361483689 28800
# Node ID 169fa6015eb76d265fc24b2f705fcc40f8bac6e5
# Parent  963296a371c6d65359dccc9d6ebf147ed6955f79
[id31] Backport ID-51 mode logic to ID-31. Related to #553

diff -r 963296a371c6 -r 169fa6015eb7 chirp/id31.py
--- a/chirp/id31.py	Wed Feb 20 19:44:20 2013 -0800
+++ b/chirp/id31.py	Thu Feb 21 13:54:49 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;
@@ -88,6 +86,7 @@
 
 """
 
+MODES = {0: "FM", 1: "NFM", 3: "AM", 5: "DV"}
 TMODES = ["", "Tone", "TSQL", "TSQL", "DTCS", "DTCS", "TSQL-R", "DTCS-R"]
 DUPLEX = ["", "-", "+"]
 DTCS_POLARITY = ["NN", "NR", "RN", "RR"]
@@ -198,7 +197,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 = MODES.values()
         rf.valid_skips = ["", "S", "P"]
         rf.valid_characters = chirp_common.CHARSET_ASCII
         rf.valid_name_length = 16
@@ -218,7 +217,7 @@
 
         bit = (1 << (number % 8))
 
-        if _mem.is_dv:
+        if MODES[int(_mem.mode)] == "DV":
             mem = chirp_common.DVMemory()
         else:
             mem = chirp_common.Memory()
@@ -237,16 +236,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 = 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 +274,7 @@
         _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 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