]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/pwm/pd.py
graycode, morse, pwm, usb_request, wiegand: cope with absent sample rate
[libsigrokdecode.git] / decoders / pwm / pd.py
index 0cd0a548d0ed91e81b287196bb076e9afc59cdc3..97704450b7701f5a01387f234eea6e9d16cc0a8e 100644 (file)
@@ -20,6 +20,9 @@
 
 import sigrokdecode as srd
 
+class SamplerateError(Exception):
+    pass
+
 class Decoder(srd.Decoder):
     api_version = 3
     id = 'pwm'
@@ -49,6 +52,10 @@ class Decoder(srd.Decoder):
     )
 
     def __init__(self):
+        self.reset()
+
+    def reset(self):
+        self.samplerate = None
         self.ss_block = self.es_block = None
 
     def metadata(self, key, value):
@@ -86,6 +93,9 @@ class Decoder(srd.Decoder):
         self.put(self.ss_block, self.es_block, self.out_binary, data)
 
     def decode(self):
+        if not self.samplerate:
+            raise SamplerateError('Cannot decode without samplerate.')
+
         num_cycles = 0
         average = 0
 
@@ -101,9 +111,9 @@ class Decoder(srd.Decoder):
             # Get the next two edges. Setup some variables that get
             # referenced in the calculation and in put() routines.
             start_samplenum = self.samplenum
-            pins = self.wait({0: 'e'})
+            self.wait({0: 'e'})
             end_samplenum = self.samplenum
-            pins = self.wait({0: 'e'})
+            self.wait({0: 'e'})
             self.ss_block = start_samplenum
             self.es_block = self.samplenum