]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/graycode/pd.py
graycode, morse, pwm, usb_request, wiegand: cope with absent sample rate
[libsigrokdecode.git] / decoders / graycode / pd.py
index 2edc8373c61993ed016e2b20b8ae05bf12dd1cc0..ef5d51352fe25356da1e9c47faf9c0487a5c3f4c 100644 (file)
 import math
 import sigrokdecode as srd
 from collections import deque
-
-def bitpack(bits):
-    res = 0
-    for i, b in enumerate(bits):
-        res |= b << i
-    return res
-
-def bitunpack(num, minbits=0):
-    res = []
-    while num or minbits > 0:
-        res.append(num & 1)
-        num >>= 1
-        minbits -= 1
-    return tuple(res)
+from common.srdhelper import bitpack, bitunpack
 
 def gray_encode(plain):
     return plain & (plain >> 1)
@@ -114,6 +101,9 @@ class Decoder(srd.Decoder):
     annotation_rows = tuple((u, v, (i,)) for i, (u, v) in enumerate(annotations))
 
     def __init__(self):
+        self.reset()
+
+    def reset(self):
         self.num_channels = 0
         self.samplerate = None
         self.last_n = deque()
@@ -185,7 +175,7 @@ class Decoder(srd.Decoder):
             if self.options['edges']:
                 self.turns.set(self.samplenum, self.count.get() // self.options['edges'])
 
-            if self.samplerate is not None:
+            if self.samplerate:
                 period = (curtime - prevtime) / self.samplerate
                 freq = abs(phasedelta_raw) / period