## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
-# Generic I²C demultiplexing protocol decoder
-
import sigrokdecode as srd
class Decoder(srd.Decoder):
- api_version = 1
+ api_version = 2
id = 'i2cdemux'
name = 'I²C demux'
longname = 'I²C demultiplexer'
license = 'gplv2+'
inputs = ['i2c']
outputs = [] # TODO: Only known at run-time.
- probes = []
- optional_probes = []
- options = {}
- annotations = []
- def __init__(self, **kwargs):
+ def __init__(self):
self.packets = [] # Local cache of I²C packets
self.slaves = [] # List of known slave addresses
self.stream = -1 # Current output stream
self.streamcount = 0 # Number of created output streams
def start(self):
- self.out_proto = []
+ self.out_python = []
# Grab I²C packets into a local cache, until an I²C STOP condition
# packet comes along. At some point before that STOP condition, there
# We're never seen this slave, add a new stream.
self.slaves.append(databyte)
- self.out_proto.append(self.register(srd.OUTPUT_PYTHON,
- proto_id='i2c-%s' % hex(databyte)))
+ self.out_python.append(self.register(srd.OUTPUT_PYTHON,
+ proto_id='i2c-%s' % hex(databyte)))
self.stream = self.streamcount
self.streamcount += 1
elif cmd == 'STOP':
# Send the whole chunk of I²C packets to the correct stream.
for p in self.packets:
- self.put(p[0], p[1], self.out_proto[self.stream], p[2])
+ self.put(p[0], p[1], self.out_python[self.stream], p[2])
self.packets = []
self.stream = -1
else:
pass # Do nothing, only add the I²C packet to our cache.
-