X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fdsi%2Fpd.py;h=7be29c3386cd49fb5921cc70706c60d14bbed290;hb=12a045188f21f42300b4cf25302478e25d15acb6;hp=d049b9c16207fb5e6c98ed9e01e21d3af4c46a37;hpb=6e333d9ef8495fd93b47ea856b0dbbdb5d33309e;p=libsigrokdecode.git diff --git a/decoders/dsi/pd.py b/decoders/dsi/pd.py index d049b9c..7be29c3 100644 --- a/decoders/dsi/pd.py +++ b/decoders/dsi/pd.py @@ -23,14 +23,15 @@ class SamplerateError(Exception): pass class Decoder(srd.Decoder): - api_version = 2 + api_version = 3 id = 'dsi' name = 'DSI' longname = 'Digital Serial Interface' - desc = 'DSI lighting control protocol.' + desc = 'Digital Serial Interface (DSI) lighting protocol.' license = 'gplv2+' inputs = ['logic'] outputs = ['dsi'] + tags = ['Embedded/industrial', 'Lighting'] channels = ( {'id': 'dsi', 'name': 'DSI', 'desc': 'DSI data line'}, ) @@ -51,6 +52,9 @@ class Decoder(srd.Decoder): ) def __init__(self): + self.reset() + + def reset(self): self.samplerate = None self.samplenum = None self.edges, self.bits, self.ss_es_bits = [], [], [] @@ -103,12 +107,12 @@ class Decoder(srd.Decoder): self.edges, self.bits, self.ss_es_bits = [], [], [] self.state = 'IDLE' - def decode(self, ss, es, data): + def decode(self): if not self.samplerate: raise SamplerateError('Cannot decode without samplerate.') bit = 0 - for (self.samplenum, pins) in data: - self.dsi = pins[0] + while True: + (self.dsi,) = self.wait() if self.options['polarity'] == 'active-high': self.dsi ^= 1 # Invert.