X-Git-Url: https://sigrok.org/gitweb/?p=libsigrokdecode.git;a=blobdiff_plain;f=decoders%2Ftransitioncounter.py;h=996cf2e0003d487281f7a8b267999c317a0f5e4c;hp=23b443e98a86969bf72661dff22019c4b0f9e678;hb=3b24e3781a0374ce2d66f1d3de59a5a5d10d657a;hpb=71a133c83c0df02d8c016ec8c192f070ad8a37fd diff --git a/decoders/transitioncounter.py b/decoders/transitioncounter.py index 23b443e..996cf2e 100644 --- a/decoders/transitioncounter.py +++ b/decoders/transitioncounter.py @@ -36,7 +36,7 @@ def decode(sampledata): channels = 8 # FIXME: Get the data in the correct format in the first place. - s = ord(sampledata['data']) + inbuf = [ord(x) for x in sampledata['data']] if lastsample == None: oldbit = [0] * channels @@ -45,30 +45,31 @@ def decode(sampledata): falling = [0] * channels # Initial values. - lastsample = s + lastsample = inbuf[0] 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 + 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 - # 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)