diff options
author | Uwe Hermann <uwe@hermann-uwe.de> | 2010-04-24 01:33:52 +0200 |
---|---|---|
committer | Uwe Hermann <uwe@hermann-uwe.de> | 2010-04-24 01:33:52 +0200 |
commit | a156f09eac00be0f6d8beaeadef77b03077ab7b1 (patch) | |
tree | a08e9a9db3c1240f5b0dcab14f1efd4ccf22fe1b /scripts | |
parent | 87f03ae9f2bf5df0e671881b679b25feccbe2fde (diff) | |
download | libsigrokdecode-a156f09eac00be0f6d8beaeadef77b03077ab7b1.tar.gz libsigrokdecode-a156f09eac00be0f6d8beaeadef77b03077ab7b1.zip |
Various small decoder script fixes.
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/i2c.py | 15 | ||||
-rw-r--r-- | scripts/transitioncounter.py | 9 |
2 files changed, 8 insertions, 16 deletions
diff --git a/scripts/i2c.py b/scripts/i2c.py index 602b010..5a41a58 100644 --- a/scripts/i2c.py +++ b/scripts/i2c.py @@ -65,12 +65,12 @@ # TODO: Implement support for inverting SDA/SCL levels (0->1 and 1->0). # TODO: Implement support for detecting various bus errors. -# TODO: Return two buffers, one with structured data for the GUI to parse -# and display, and one with human-readable ASCII output. - def decode(inbuf): """I2C protocol decoder""" + # FIXME: Get the data in the correct format in the first place. + inbuf = [ord(x) for x in inbuf] + # FIXME: This should be passed in as metadata, not hardcoded here. signals = (2, 5) channels = 8 @@ -84,16 +84,13 @@ def decode(inbuf): scl_bit, sda_bit = signals # Get SCL/SDA bit values (0/1 for low/high) of the first sample. - s = ord(inbuf[0]) + s = inbuf[0] oldscl = (s & (1 << scl_bit)) >> scl_bit oldsda = (s & (1 << sda_bit)) >> sda_bit # Loop over all samples. # TODO: Handle LAs with more/less than 8 channels. for samplenum, s in enumerate(inbuf[1:]): # We skip the first byte... - - s = ord(s) # FIXME - # Get SCL/SDA bit values (0/1 for low/high). scl = (s & (1 << scl_bit)) >> scl_bit sda = (s & (1 << sda_bit)) >> sda_bit @@ -148,19 +145,17 @@ def decode(inbuf): return o -# This is just a draft. def register(): return { 'id': 'i2c', 'name': 'I2C', 'desc': 'Inter-Integrated Circuit (I2C) bus', - 'func': 'decode', 'inputformats': ['raw'], 'signalnames': { 'SCL': 'Serial clock line', 'SDA': 'Serial data line', }, - 'outputformats': ['i2c', 'ascii'], + 'outputformats': ['i2c'], } # Use psyco (if available) as it results in huge performance improvements. diff --git a/scripts/transitioncounter.py b/scripts/transitioncounter.py index 4064d2f..a6d331e 100644 --- a/scripts/transitioncounter.py +++ b/scripts/transitioncounter.py @@ -35,10 +35,7 @@ def decode(inbuf): rising = [0] * channels falling = [0] * channels - # print len(inbuf) - # print type(inbuf) - - # Presets... + # Initial values. oldbyte = inbuf[0] for i in range(channels): oldbit[i] = (oldbyte & (1 << i)) >> i @@ -59,6 +56,7 @@ def decode(inbuf): elif (oldbit[i] == 1 and curbit == 0): falling[i] += 1 oldbit[i] = curbit + oldbyte = s # Total number of transitions is the sum of rising and falling edges. for i in range(channels): @@ -81,8 +79,7 @@ def register(): return { 'id': 'transitioncounter', 'name': 'Transition counter', - 'desc': 'TODO', - 'func': 'decode', + 'desc': 'Count rising/falling edges', 'inputformats': ['raw'], 'signalnames': {}, # FIXME 'outputformats': ['transitioncounts'], |