]> sigrok.org Git - libsigrokdecode.git/commitdiff
sle44xx: use symbolic identifiers for pins and signal transitions
authorGerhard Sittig <redacted>
Mon, 27 Jul 2020 18:03:47 +0000 (20:03 +0200)
committerGerhard Sittig <redacted>
Sun, 30 Aug 2020 05:23:58 +0000 (07:23 +0200)
Eliminate magic numbers for input pins and signal transition conditions.
Which dramatically improves readability and simplifies review.

decoders/sle44xx/pd.py

index 0bc3ec7cf765bb665f8760c63d94996e772a6b7c..1c0cdb4c9e1901bef21630900d349e3b31567edb 100644 (file)
@@ -19,6 +19,9 @@
 
 import sigrokdecode as srd
 
 
 import sigrokdecode as srd
 
+class Pin:
+    RST, CLK, IO, = range(3)
+
 # CMD: [annotation-type-index, long annotation, short annotation]
 proto = {
     'RESET':           [0, 'Reset',         'R'],
 # CMD: [annotation-type-index, long annotation, short annotation]
 proto = {
     'RESET':           [0, 'Reset',         'R'],
@@ -140,12 +143,24 @@ class Decoder(srd.Decoder):
 
     def decode(self):
         while True:
 
     def decode(self):
         while True:
-            pins = self.wait([{0: 'r'}, {0: 'l', 1: 'r'}, {1: 'h', 2: 'f'}, {1: 'h', 2: 'r'}])
-            if self.matched[0]: # RESET condition (R): RST = rising
+            # Signal conditions tracked by the protocol decoder:
+            # - RESET condition (R): RST = rising
+            # - Incoming data (D): RST = low, CLK = rising.
+            # - Command mode START: CLK = high, I/O = falling.
+            # - Command mode STOP: CLK = high, I/O = rising.
+            (COND_RESET, COND_DATA, COND_CMD_START, COND_CMD_STOP,) = range(4)
+            conditions = [
+                {Pin.RST: 'r'},
+                {Pin.RST: 'l', Pin.CLK: 'r'},
+                {Pin.CLK: 'h', Pin.IO: 'f'},
+                {Pin.CLK: 'h', Pin.IO: 'r'},
+            ]
+            pins = self.wait(conditions)
+            if self.matched[COND_RESET]:
                 self.handle_reset(pins)
                 self.handle_reset(pins)
-            elif self.matched[1]: # Incoming data (D): RST = low, CLK = rising.
+            elif self.matched[COND_DATA]:
                 self.handle_data(pins)
                 self.handle_data(pins)
-            elif self.matched[2]: # Command mode START: CLK = high, I/O = falling.
+            elif self.matched[COND_CMD_START]:
                 self.handle_command(pins)
                 self.handle_command(pins)
-            elif self.matched[3]: # Command mode STOP: CLK = high, I/O = rising.
+            elif self.matched[COND_CMD_STOP]:
                 self.handle_command(pins)
                 self.handle_command(pins)