'address_format': ['Displayed slave address format', 'shifted'],
}
annotations = [
- ['Start', 'Start condition'],
- ['Repeat start', 'Repeat start condition'],
- ['Stop', 'Stop condition'],
- ['ACK', 'ACK'],
- ['NACK', 'NACK'],
- ['Address read', 'Address read'],
- ['Address write', 'Address write'],
- ['Data read', 'Data read'],
- ['Data write', 'Data write'],
- ['Warnings', 'Human-readable warnings'],
+ ['start', 'Start condition'],
+ ['repeat-start', 'Repeat start condition'],
+ ['stop', 'Stop condition'],
+ ['ack', 'ACK'],
+ ['nack', 'NACK'],
+ ['address-read', 'Address read'],
+ ['address-write', 'Address write'],
+ ['data-read', 'Data read'],
+ ['data-write', 'Data write'],
+ ['warnings', 'Human-readable warnings'],
]
+ binary = (
+ 'Address read',
+ 'Address write',
+ 'Data read',
+ 'Data write',
+ )
def __init__(self, **kwargs):
self.samplerate = None
def start(self):
self.out_proto = self.register(srd.OUTPUT_PYTHON)
self.out_ann = self.register(srd.OUTPUT_ANN)
+ self.out_binary = self.add(srd.OUTPUT_BINARY)
self.out_bitrate = self.register(srd.OUTPUT_META,
meta=(int, 'Bitrate', 'Bitrate from Start bit to Stop bit'))
- def report(self):
- pass
-
def putx(self, data):
self.put(self.startsample, self.samplenum, self.out_ann, data)
def putp(self, data):
self.put(self.startsample, self.samplenum, self.out_proto, data)
+ def putb(self, data):
+ self.put(self.startsample, self.samplenum, self.out_binary, data)
+
def is_start_condition(self, scl, sda):
# START condition (S): SDA = falling, SCL = high
if (self.oldsda == 1 and sda == 0) and scl == 1:
if self.options['address_format'] == 'shifted':
d = d >> 1
+ bin_class = -1
if self.state == 'FIND ADDRESS' and self.wr == 1:
cmd = 'ADDRESS WRITE'
+ bin_class = 1
elif self.state == 'FIND ADDRESS' and self.wr == 0:
cmd = 'ADDRESS READ'
+ bin_class = 0
elif self.state == 'FIND DATA' and self.wr == 1:
cmd = 'DATA WRITE'
+ bin_class = 3
elif self.state == 'FIND DATA' and self.wr == 0:
cmd = 'DATA READ'
+ bin_class = 2
self.putp([cmd, d])
self.putx([proto[cmd][0], ['%s: %02X' % (proto[cmd][1], d),
'%s: %02X' % (proto[cmd][2], d), '%02X' % d]])
+ self.putb((bin_class, bytes([d])))
# Done with this packet.
self.startsample = -1