import sigrokdecode as srd
-# Annotation formats
-ANN_HEX = 0
-
class Decoder(srd.Decoder):
api_version = 1
id = 'i2s'
optional_probes = []
options = {}
annotations = [
- ['Hex', 'Annotations in hex format'],
+ ['left', 'Left channel'],
+ ['right', 'Right channel'],
+ ['warnings', 'Warnings'],
]
def __init__(self, **kwargs):
self.samplesreceived = 0
self.first_sample = None
self.start_sample = None
- self.samplenum = -1
self.wordlength = -1
def start(self, metadata):
# Only submit the sample, if we received the beginning of it.
if self.start_sample != None:
self.samplesreceived += 1
- self.put(self.start_sample, self.samplenum, self.out_proto,
+ self.put(self.start_sample, samplenum, self.out_proto,
['data', self.data])
- self.put(self.start_sample, self.samplenum, self.out_ann,
- [ANN_HEX, ['%s: 0x%08x' % ('L' if self.oldws else 'R',
- self.data)]])
+ idx = 0 if self.oldws else 1
+ self.put(self.start_sample, samplenum, self.out_ann,
+ [idx, ['0x%08x', self.data)]])
# Check that the data word was the correct length.
if self.wordlength != -1 and self.wordlength != self.bitcount:
- self.put(self.start_sample, self.samplenum, self.out_ann,
- [ANN_HEX, ['WARNING: Received a %d-bit word, when a '
+ self.put(self.start_sample, samplenum, self.out_ann,
+ [2, ['Received a %d-bit word, when a '
'%d-bit word was expected' % (self.bitcount,
self.wordlength)]])
# Reset decoder state.
self.data = 0
self.bitcount = 0
- self.start_sample = self.samplenum
+ self.start_sample = samplenum
# Save the first sample position.
if self.first_sample == None:
- self.first_sample = self.samplenum
+ self.first_sample = samplenum
self.oldws = ws