From abbbd2ba56a70b9978c4f31a4988102364807997 Mon Sep 17 00:00:00 2001
From: Joel Holdsworth <joel@airwebreathe.org.uk>
Date: Fri, 6 Apr 2012 20:11:01 +0100
Subject: srd/i2s: Print a warning on receiving a malformed word

---
 decoders/i2s/i2s.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

(limited to 'decoders')

diff --git a/decoders/i2s/i2s.py b/decoders/i2s/i2s.py
index 30497b3..23f625d 100644
--- a/decoders/i2s/i2s.py
+++ b/decoders/i2s/i2s.py
@@ -52,6 +52,7 @@ class Decoder(srd.Decoder):
         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')
@@ -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,
-                    [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
-- 
cgit v1.2.3-70-g09d2