From a156f09eac00be0f6d8beaeadef77b03077ab7b1 Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Sat, 24 Apr 2010 01:33:52 +0200 Subject: [PATCH] Various small decoder script fixes. --- scripts/i2c.py | 15 +++++---------- 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'], -- 2.30.2