X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=decoders%2Fonewire_link%2Fpd.py;h=9c4913ce422a6dfd287896e41d7c49f59d5f98e4;hb=c87dce4c93822df764cc380213e9a69eced7e6e9;hp=a309cc3229f157bb64f8f2fb5a862908559790bf;hpb=4e980c20fbb456ca339529762ea7173900521a3c;p=libsigrokdecode.git diff --git a/decoders/onewire_link/pd.py b/decoders/onewire_link/pd.py index a309cc3..9c4913c 100644 --- a/decoders/onewire_link/pd.py +++ b/decoders/onewire_link/pd.py @@ -80,6 +80,7 @@ class Decoder(srd.Decoder): self.put(self.rise, self.samplenum, self.out_ann, data) def __init__(self, **kwargs): + self.samplerate = None self.samplenum = 0 self.state = 'WAIT FOR FALLING EDGE' self.present = 0 @@ -90,11 +91,14 @@ class Decoder(srd.Decoder): self.fall = 0 self.rise = 0 - def start(self, metadata): - self.out_proto = self.add(srd.OUTPUT_PROTO, 'onewire_link') - self.out_ann = self.add(srd.OUTPUT_ANN, 'onewire_link') + def start(self): + self.out_proto = self.register(srd.OUTPUT_PYTHON) + self.out_ann = self.register(srd.OUTPUT_ANN) - self.samplerate = metadata['samplerate'] + def metadata(self, key, value): + if key != srd.SRD_CONF_SAMPLERATE: + return + self.samplerate = value # Check if samplerate is appropriate. if self.options['overdrive'] == 'yes': @@ -169,10 +173,9 @@ class Decoder(srd.Decoder): '(%2.1fus-%2.1fus) should be inside (7.3us, 10.0us).' % (time_min*1000000, time_max*1000000)]]) - def report(self): - pass - def decode(self, ss, es, data): + if self.samplerate is None: + raise Exception("Cannot decode without samplerate.") for (self.samplenum, (owr, pwr)) in data: # State machine. if self.state == 'WAIT FOR FALLING EDGE':