## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
-#
# Generic I2C demultiplexing protocol decoder
-#
-# Takes an I2C stream as input and outputs multiple I2C streams, each stream
-# containing only I2C packets for one specific I2C slave.
-#
import sigrokdecode as srd
api_version = 1
id = 'i2cdemux'
name = 'I2C demux'
- longname = 'Generic I2C demultiplexer'
- desc = 'TODO.'
- longdesc = 'TODO.'
+ longname = 'I2C demultiplexer'
+ desc = 'Demux I2C packets into per-slave-address streams.'
license = 'gplv2+'
inputs = ['i2c']
outputs = [] # TODO: Only known at run-time.
probes = []
+ optional_probes = []
options = {}
annotations = []
# get the whole chunk of packets (from START to STOP).
def decode(self, ss, es, data):
- cmd, databyte, ack = data
+ cmd, databyte = data
# Add the I2C packet to our local cache.
- self.packets += [[ss, es, data]]
+ self.packets.append([ss, es, data])
if cmd in ('ADDRESS READ', 'ADDRESS WRITE'):
if databyte in self.slaves:
return
# We're never seen this slave, add a new stream.
- self.slaves += [databyte]
- self.out_proto += [self.add(srd.OUTPUT_PROTO,
- 'i2c-%s' % hex(databyte))]
+ self.slaves.append(databyte)
+ self.out_proto.append(self.add(srd.OUTPUT_PROTO,
+ 'i2c-%s' % hex(databyte)))
self.stream = self.streamcount
self.streamcount += 1
elif cmd == 'STOP':
self.packets = []
self.stream = -1
+ else:
+ pass # Do nothing, only add the I2C packet to our cache.