i2c: make input samplerate optional
authorGerhard Sittig <gerhard.sittig@gmx.net>
Fri, 15 Dec 2017 18:26:29 +0000 (19:26 +0100)
committerUwe Hermann <uwe@hermann-uwe.de>
Tue, 13 Feb 2018 17:44:03 +0000 (18:44 +0100)
Absence of a samplerate for the input stream should not be fatal. The
protocol decodes fine, we just cannot determine a bitrate for frames.

This addresses part of bug 1076.

decoders/i2c/pd.py

index b633397f563f6ae5b34327d1738b5c15fe65a026..e70c27de27b301ffcc52d12bf800f141263d3eb1 100644 (file)
@@ -61,9 +61,6 @@ proto = {
     'DATA WRITE':      [9, 'Data write',    'DW'],
 }
 
-class SamplerateError(Exception):
-    pass
-
 class Decoder(srd.Decoder):
     api_version = 3
     id = 'i2c'
@@ -238,9 +235,10 @@ class Decoder(srd.Decoder):
 
     def handle_stop(self, pins):
         # Meta bitrate
-        elapsed = 1 / float(self.samplerate) * (self.samplenum - self.pdu_start + 1)
-        bitrate = int(1 / elapsed * self.pdu_bits)
-        self.put(self.ss_byte, self.samplenum, self.out_bitrate, bitrate)
+        if self.samplerate:
+            elapsed = 1 / float(self.samplerate) * (self.samplenum - self.pdu_start + 1)
+            bitrate = int(1 / elapsed * self.pdu_bits)
+            self.put(self.ss_byte, self.samplenum, self.out_bitrate, bitrate)
 
         cmd = 'STOP'
         self.ss, self.es = self.samplenum, self.samplenum
@@ -252,9 +250,6 @@ class Decoder(srd.Decoder):
         self.bits = []
 
     def decode(self):
-        if not self.samplerate:
-            raise SamplerateError('Cannot decode without samplerate.')
-
         while True:
             # State machine.
             if self.state == 'FIND START':