X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fgraycode%2Fpd.py;h=ef5d51352fe25356da1e9c47faf9c0487a5c3f4c;hb=f735ac18c837729de2993568818521ac911a164b;hp=2edc8373c61993ed016e2b20b8ae05bf12dd1cc0;hpb=b9b63977498f2114cf41d9039223481cbcaf3a45;p=libsigrokdecode.git diff --git a/decoders/graycode/pd.py b/decoders/graycode/pd.py index 2edc837..ef5d513 100644 --- a/decoders/graycode/pd.py +++ b/decoders/graycode/pd.py @@ -20,20 +20,7 @@ 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