summaryrefslogtreecommitdiff
path: root/decoders/pwm
diff options
context:
space:
mode:
authorGerhard Sittig <gerhard.sittig@gmx.net>2018-01-28 20:49:48 +0100
committerGerhard Sittig <gerhard.sittig@gmx.net>2018-01-28 20:49:48 +0100
commit15a8a05595c72d328abdea8e3b23f1b558cc46bf (patch)
treedf65ff2c6163724aa5f49275086963fa3660b6a5 /decoders/pwm
parent956721de58552b05776c8613449f2907196e61e9 (diff)
downloadlibsigrokdecode-15a8a05595c72d328abdea8e3b23f1b558cc46bf.tar.gz
libsigrokdecode-15a8a05595c72d328abdea8e3b23f1b558cc46bf.zip
graycode, morse, pwm, usb_request, wiegand: cope with absent sample rate
Improve robustness of some more protocol decoders. Few of them never checked for the availability of a sample rate in the first place, others checked for the presence of a spec but would not cope with a value of 0. Some checked the value only after processing it, which could result in runtime errors. This change is motivated by bug #1118.
Diffstat (limited to 'decoders/pwm')
-rw-r--r--decoders/pwm/pd.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/decoders/pwm/pd.py b/decoders/pwm/pd.py
index 2301523..9770445 100644
--- a/decoders/pwm/pd.py
+++ b/decoders/pwm/pd.py
@@ -20,6 +20,9 @@
import sigrokdecode as srd
+class SamplerateError(Exception):
+ pass
+
class Decoder(srd.Decoder):
api_version = 3
id = 'pwm'
@@ -52,6 +55,7 @@ class Decoder(srd.Decoder):
self.reset()
def reset(self):
+ self.samplerate = None
self.ss_block = self.es_block = None
def metadata(self, key, value):
@@ -89,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