diff options
author | Uwe Hermann <uwe@hermann-uwe.de> | 2010-04-11 03:58:05 +0200 |
---|---|---|
committer | Uwe Hermann <uwe@hermann-uwe.de> | 2010-04-11 03:58:05 +0200 |
commit | d0f3d67746c89ee19f4c7a8d6f8858afd54347de (patch) | |
tree | 2084e01e990e3938a7d43cee538ae30a02ecba5f | |
parent | 910e5fd8a73ac006bd5fa341b3f3cf3d9318b4f0 (diff) | |
download | libsigrokdecode-d0f3d67746c89ee19f4c7a8d6f8858afd54347de.tar.gz libsigrokdecode-d0f3d67746c89ee19f4c7a8d6f8858afd54347de.zip |
Implement a simple transition counter script.
-rw-r--r-- | scripts/transitioncounter.py | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/scripts/transitioncounter.py b/scripts/transitioncounter.py index ba799ec..cbf8068 100644 --- a/scripts/transitioncounter.py +++ b/scripts/transitioncounter.py @@ -18,20 +18,55 @@ ## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ## -# FIXME: So far this is just a simple test for the Python embedding code. def sigrokdecode_count_transitions(inbuf): """Counts the low->high and high->low transitions in the specified channel(s) of the signal.""" - outbuf = 'AB' # FIXME + outbuf = '' + + # TODO: Don't hardcode the number of channels. + channels = 8 + + oldbit = [0] * channels + transitions = [0] * channels + rising = [0] * channels + falling = [0] * channels # print len(inbuf) # print type(inbuf) - # print inbuf - # print str(inbuf[0]) - # print str(inbuf[1]) + # Presets... + s = ord(inbuf[0]) + for i in xrange(channels): + curbit = (s & (1 << i) != 0) + oldbit[i] = curbit + + # Loop over all samples. + # TODO: Handle LAs with more/less than 8 channels. + for s in inbuf: + s = ord(s) # FIXME + for i in xrange(channels): + curbit = (s & (1 << i) != 0) + if (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 xrange(channels): + transitions[i] = rising[i] + falling[i] + + outbuf += "Rising edges: " + for i in xrange(channels): + outbuf += str(rising[i]) + " " + outbuf += "\nFalling edges: " + for i in xrange(channels): + outbuf += str(falling[i]) + " " + outbuf += "\nTransitions: " + for i in xrange(channels): + outbuf += str(transitions[i]) + " " + outbuf += "\n" - # return inbuf return outbuf |