## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
+
class Sample():
def __init__(self, data):
self.data = data
probes = {'sdata':0, 'sck':1}
options = {}
- def __init__(self, unitsize, **kwargs):
- # Metadata comes in here, we don't care for now
- #print kwargs
- self.unitsize = unitsize
-
+ def __init__(self):
self.probes = Decoder.probes.copy()
self.oldsck = True
self.rxcount = 0
self.rxdata = 0
self.bytesreceived = 0
+ def start(self, metadata):
+ self.unitsize = metadata['unitsize']
+
def report(self):
- return "SPI: %d bytes received" % self.bytesreceived
+ return 'SPI: %d bytes received' % self.bytesreceived
def decode(self, data):
# We should accept a list of samples and iterate...
- for sample in sampleiter(data["data"], self.unitsize):
+ for sample in sampleiter(data['data'], self.unitsize):
- sck = sample.probe(self.probes["sck"])
+ sck = sample.probe(self.probes['sck'])
# Sample SDATA on rising SCK
if sck == self.oldsck:
continue
self.oldsck = sck
- if not sck:
- continue
+ if not sck:
+ continue
# If this is first bit, save timestamp
if self.rxcount == 0:
- self.time = data["time"]
+ self.time = data['time']
# Receive bit into our shift register
- sdata = sample.probe(self.probes["sdata"])
+ sdata = sample.probe(self.probes['sdata'])
if sdata:
self.rxdata |= 1 << (7 - self.rxcount)
self.rxcount += 1
if self.rxcount != 8:
continue
# Received a byte, pass up to sigrok
- outdata = {"time":self.time,
- "duration":data["time"] + data["duration"] - self.time,
- "data":self.rxdata,
- "display":("%02X" % self.rxdata),
- "type":"spi",
+ outdata = {'time':self.time,
+ 'duration':data['time'] + data['duration'] - self.time,
+ 'data':self.rxdata,
+ 'display':('%02X' % self.rxdata),
+ 'type':'spi',
}
sigrok.put(outdata)
# Reset decoder state
self.rxcount = 0
# Keep stats for summary
self.bytesreceived += 1
-
-if __name__ == "__main__":
- data = open("spi_dump.bin").read()
+
+if __name__ == '__main__':
+ data = open('spi_dump.bin').read()
# dummy class to keep Decoder happy for test
class Sigrok():
sigrok = Sigrok()
dec = Decoder(driver='ols', unitsize=1, starttime=0)
- dec.decode({"time":0, "duration":len(data), "data":data, "type":"logic"})
+ dec.decode({'time':0, 'duration':len(data), 'data':data, 'type':'logic'})
print dec.summary()
else:
#Tested with:
# sigrok-cli -d 0:samplerate=1000000:rle=on --time=1s -p 1,2 -a spidec
-