]> sigrok.org Git - libsigrokdecode.git/commitdiff
parallel: add option to sample data on either clock edge
authorGerhard Sittig <redacted>
Sat, 7 Nov 2020 13:47:21 +0000 (14:47 +0100)
committerGerhard Sittig <redacted>
Wed, 11 Nov 2020 18:31:47 +0000 (19:31 +0100)
Add 'either' as another choice in addition to rising and falling clock
edge. This is useful since parallel busses exist which communicate at
double data rate (DDR).

Unobfuscate the mapping between displayed option text and .wait()
condition codes while we are here.

decoders/parallel/pd.py

index 10255f3c658a89f6bc9c132678f7b35a1dfe1df0..abf48eb170fc5b5ae3acc979f7d6ba340a56f873 100644 (file)
@@ -86,7 +86,7 @@ class Decoder(srd.Decoder):
     )
     options = (
         {'id': 'clock_edge', 'desc': 'Clock edge to sample on',
-            'default': 'rising', 'values': ('rising', 'falling')},
+            'default': 'rising', 'values': ('rising', 'falling', 'either')},
         {'id': 'wordsize', 'desc': 'Data wordsize (# bus cycles)',
             'default': 0},
         {'id': 'endianness', 'desc': 'Data endianness',
@@ -204,7 +204,11 @@ class Decoder(srd.Decoder):
         # which provide input data.
         has_clock = self.has_channel(Pin.CLOCK)
         if has_clock:
-            edge = self.options['clock_edge'][0]
+            edge = {
+                'rising': 'r',
+                'falling': 'f',
+                'either': 'e',
+            }.get(self.options['clock_edge'])
             conds = [{Pin.CLOCK: edge}]
         else:
             conds = [{idx: 'e'} for idx in has_data]