id = 'i2cfilter'
name = 'I2C filter'
longname = 'I2C filter'
- desc = 'Filter out specific addresses/directions in an I2C stream.'
+ desc = 'Filter out addresses/directions in an I2C stream.'
license = 'gplv3+'
inputs = ['i2c']
outputs = []
+ probes = []
+ optional_probes = []
options = {
'address': ['Address to filter out of the I2C stream', 0],
'direction': ['Direction to filter (read/write)', '']
}
+ annotations = []
def __init__(self, **kwargs):
self.state = None
def start(self, metadata):
self.out_proto = self.add(srd.OUTPUT_PROTO, 'i2cdata')
if self.options['direction'] not in ('', 'read', 'write'):
- raise Exception("Invalid direction: expected 'read' or 'write'")
+ raise Exception('Invalid direction: expected "read" or "write"')
+
+ def report(self):
+ pass
def decode(self, ss, es, data):
try:
- cmd, data, ack_bit = data
+ cmd, data = data
except Exception as e:
raise Exception('Malformed I2C input: %s' % str(e)) from e
if cmd == 'STOP':
self.state = None
return
+ if cmd in ('ACK', 'NACK'):
+ # Don't care, we just want data.
+ return
if self.state == 'start':
# Start of a transfer, see if we want this one.