srd/i2s: Print a warning on receiving a malformed word
authorJoel Holdsworth <joel@airwebreathe.org.uk>
Fri, 6 Apr 2012 19:11:01 +0000 (20:11 +0100)
committerJoel Holdsworth <joel@airwebreathe.org.uk>
Fri, 6 Apr 2012 21:29:49 +0000 (22:29 +0100)
decoders/i2s/i2s.py

index 30497b3190d0e02f26ba906a713729019e4cd439..23f625d3a54f6e2fded6aa56307e83cf972cd469 100644 (file)
@@ -52,6 +52,7 @@ class Decoder(srd.Decoder):
         self.samplesreceived = 0
         self.start_sample = None
         self.samplenum = -1
         self.samplesreceived = 0
         self.start_sample = None
         self.samplenum = -1
+        self.wordlength = -1
 
     def start(self, metadata):
         self.out_proto = self.add(srd.OUTPUT_PROTO, 'i2s')
 
     def start(self, metadata):
         self.out_proto = self.add(srd.OUTPUT_PROTO, 'i2s')
@@ -84,8 +85,17 @@ class Decoder(srd.Decoder):
                 self.put(self.start_sample, self.samplenum, self.out_proto,
                     ['data', self.data])
                 self.put(self.start_sample, self.samplenum, self.out_ann,
                 self.put(self.start_sample, self.samplenum, self.out_proto,
                     ['data', self.data])
                 self.put(self.start_sample, self.samplenum, self.out_ann,
-                    [ANN_HEX, ['%s %d-bits: 0x%08x' % ('L' if self.oldws else 'R',
-                    self.bitcount, self.data)]])
+                    [ANN_HEX, ['%s: 0x%08x' % ('L' if self.oldws else 'R',
+                   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 '
+                        '%d-bit word was expected' % (self.bitcount,
+                        self.wordlength)]])
+
+                self.wordlength = self.bitcount
 
             # Reset decoder state.
             self.data = 0
 
             # Reset decoder state.
             self.data = 0