]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/transitioncounter.py
nunchuk.py: Fix indentation (syntax error).
[libsigrokdecode.git] / decoders / transitioncounter.py
index 23b443e98a86969bf72661dff22019c4b0f9e678..d3fa73273223e426657edc9c295f9420ec9f9a44 100644 (file)
@@ -17,6 +17,7 @@
 ## along with this program; if not, write to the Free Software
 ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 ##
+
 import sigrok
 
 lastsample = None
@@ -25,78 +26,78 @@ transitions = None
 rising = None
 falling = None
 
-
 def decode(sampledata):
-       """Counts the low->high and high->low transitions in the specified
-          channel(s) of the signal."""
-       global lastsample
-       global oldbit, transitions, rising, falling
+    """Counts the low->high and high->low transitions in the specified
+       channel(s) of the signal."""
+    global lastsample
+    global oldbit, transitions, rising, falling
+
+    # TODO: Don't hardcode the number of channels.
+    channels = 8
+
+    # FIXME: Get the data in the correct format in the first place.
+    inbuf = [ord(x) for x in sampledata['data']]
 
-       # TODO: Don't hardcode the number of channels.
-       channels = 8    
+    if lastsample == None:
+        oldbit = [0] * channels
+        transitions = [0] * channels
+        rising = [0] * channels
+        falling = [0] * channels
 
-       # FIXME: Get the data in the correct format in the first place.
-       s = ord(sampledata['data'])
+        # Initial values.
+        lastsample = inbuf[0]
+        for i in range(channels):
+            oldbit[i] = (lastsample & (1 << i)) >> i
 
-       if lastsample == None:
-               oldbit = [0] * channels
-               transitions = [0] * channels
-               rising = [0] * channels
-               falling = [0] * channels
+    # TODO: Handle LAs with more/less than 8 channels.
+    for s in inbuf:
+        # Optimization: Skip identical bytes (no transitions).
+        if lastsample != s:
+            for i in range(channels):
+                curbit = (s & (1 << i)) >> i
+                # Optimization: Skip identical bits (no transitions).
+                if oldbit[i] == curbit:
+                    continue
+                elif (oldbit[i] == 0 and curbit == 1):
+                    rising[i] += 1
+                elif (oldbit[i] == 1 and curbit == 0):
+                    falling[i] += 1
+                oldbit[i] = curbit
 
-               # Initial values.
-               lastsample = s
-               for i in range(channels):
-                       oldbit[i] = (lastsample & (1 << i)) >> i
-               
-       # TODO: Handle LAs with more/less than 8 channels.
-       # Optimization: Skip identical bytes (no transitions).
-       if lastsample != s:
-               for i in range(channels):
-                       curbit = (s & (1 << i)) >> i
-                       # Optimization: Skip identical bits (no transitions).
-                       if oldbit[i] == curbit:
-                               continue
-                       elif (oldbit[i] == 0 and curbit == 1):
-                               rising[i] += 1
-                       elif (oldbit[i] == 1 and curbit == 0):
-                               falling[i] += 1
-                       oldbit[i] = curbit
+            # Total number of transitions is the sum of rising and falling edges.
+            for i in range(channels):
+                transitions[i] = rising[i] + falling[i]
 
-               # Total number of transitions is the sum of rising and falling edges.
-               for i in range(channels):
-                       transitions[i] = rising[i] + falling[i]
-               
-               lastsample = s
-               print(transitions)
+            lastsample = s
+            print(transitions)
 
-       sigrok.put(sampledata)
+    sigrok.put(sampledata)
 
 register = {
-       'id': 'transitioncounter',
-       'name': 'Transition counter',
-       'longname': '...',
-       'desc': 'Counts rising/falling edges in the signal.',
-       'longdesc': '...',
-       'author': 'Uwe Hermann',
-       'email': 'uwe@hermann-uwe.de',
-       'license': 'gplv2+',
-       'in': ['logic'],
-       'out': ['transitioncounts'],
-       'probes': [
-               # All probes.
-       ],
-       'options': {
-               # No options so far.
-       },
-       # 'start': start,
-       # 'report': report,
+    'id': 'transitioncounter',
+    'name': 'Transition counter',
+    'longname': '...',
+    'desc': 'Counts rising/falling edges in the signal.',
+    'longdesc': '...',
+    'author': 'Uwe Hermann',
+    'email': 'uwe@hermann-uwe.de',
+    'license': 'gplv2+',
+    'in': ['logic'],
+    'out': ['transitioncounts'],
+    'probes': [
+        # All probes.
+    ],
+    'options': {
+        # No options so far.
+    },
+    # 'start': start,
+    # 'report': report,
 }
 
 # Use psyco (if available) as it results in huge performance improvements.
 try:
-       import psyco
-       psyco.bind(decode)
+    import psyco
+    psyco.bind(decode)
 except ImportError:
-       pass
+    pass