X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fi2s%2Fpd.py;h=6b94c1052ed031a223d42a9ec33ce5068ebcfa8a;hb=46fe9a4ab1327b03809fe3e5e288773f3f93e5ea;hp=989a5a5eaf9433ec653b60d3bf12c0d4f4e82468;hpb=12851357e784b893e24880efc6cd22a0cbcc64ce;p=libsigrokdecode.git diff --git a/decoders/i2s/pd.py b/decoders/i2s/pd.py index 989a5a5..6b94c10 100644 --- a/decoders/i2s/pd.py +++ b/decoders/i2s/pd.py @@ -33,6 +33,9 @@ Packet: : integer ''' +class SamplerateError(Exception): + pass + class Decoder(srd.Decoder): api_version = 2 id = 'i2s' @@ -64,13 +67,13 @@ class Decoder(srd.Decoder): self.data = 0 self.samplesreceived = 0 self.first_sample = None - self.start_sample = None + self.ss_block = None self.wordlength = -1 self.wrote_wav_header = False def start(self): self.out_python = self.register(srd.OUTPUT_PYTHON) - self.out_bin = self.register(srd.OUTPUT_BINARY) + self.out_binary = self.register(srd.OUTPUT_BINARY) self.out_ann = self.register(srd.OUTPUT_ANN) def metadata(self, key, value): @@ -78,23 +81,23 @@ class Decoder(srd.Decoder): self.samplerate = value def putpb(self, data): - self.put(self.start_sample, self.samplenum, self.out_python, data) + self.put(self.ss_block, self.samplenum, self.out_python, data) def putbin(self, data): - self.put(self.start_sample, self.samplenum, self.out_bin, data) + self.put(self.ss_block, self.samplenum, self.out_binary, data) def putb(self, data): - self.put(self.start_sample, self.samplenum, self.out_ann, data) + self.put(self.ss_block, self.samplenum, self.out_ann, data) def report(self): # Calculate the sample rate. samplerate = '?' - if self.start_sample != None and \ - self.first_sample != None and \ - self.start_sample > self.first_sample: + if self.ss_block is not None and \ + self.first_sample is not None and \ + self.ss_block > self.first_sample: samplerate = '%d' % (self.samplesreceived * - self.samplerate / (self.start_sample - + self.samplerate / (self.ss_block - self.first_sample)) return 'I²S: %d %d-bit samples received at %sHz' % \ @@ -128,8 +131,8 @@ class Decoder(srd.Decoder): return bytes([lo, hi]) def decode(self, ss, es, data): - if self.samplerate is None: - raise Exception("Cannot decode without samplerate.") + if not self.samplerate: + raise SamplerateError('Cannot decode without samplerate.') for self.samplenum, (sck, ws, sd) in data: # Ignore sample if the bit clock hasn't changed. @@ -148,10 +151,10 @@ class Decoder(srd.Decoder): continue # Only submit the sample, if we received the beginning of it. - if self.start_sample != None: + if self.ss_block is not None: if not self.wrote_wav_header: - self.put(0, 0, self.out_bin, (0, self.wav_header())) + self.put(0, 0, self.out_binary, [0, self.wav_header()]) self.wrote_wav_header = True self.samplesreceived += 1 @@ -164,7 +167,7 @@ class Decoder(srd.Decoder): self.putpb(['DATA', [c3, self.data]]) self.putb([idx, ['%s: %s' % (c1, v), '%s: %s' % (c2, v), '%s: %s' % (c3, v), c3]]) - self.putbin((0, self.wav_sample(self.data))) + self.putbin([0, self.wav_sample(self.data)]) # Check that the data word was the correct length. if self.wordlength != -1 and self.wordlength != self.bitcount: @@ -176,11 +179,10 @@ class Decoder(srd.Decoder): # Reset decoder state. self.data = 0 self.bitcount = 0 - self.start_sample = self.samplenum + self.ss_block = self.samplenum # Save the first sample position. - if self.first_sample == None: + if self.first_sample is None: self.first_sample = self.samplenum self.oldws = ws -