]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/pwm/pd.py
adxl345: Use SrdIntEnum for annotation classes.
[libsigrokdecode.git] / decoders / pwm / pd.py
index 444b4179cb55ac00e337bb791c10ac6c14da1e3c..2eda02ca42a1c174b48aa66e19bf74d7f36137b5 100644 (file)
@@ -20,6 +20,9 @@
 
 import sigrokdecode as srd
 
+class SamplerateError(Exception):
+    pass
+
 class Decoder(srd.Decoder):
     api_version = 3
     id = 'pwm'
@@ -28,7 +31,8 @@ class Decoder(srd.Decoder):
     desc = 'Analog level encoded in duty cycle percentage.'
     license = 'gplv2+'
     inputs = ['logic']
-    outputs = ['pwm']
+    outputs = []
+    tags = ['Encoding']
     channels = (
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
     )
@@ -41,14 +45,18 @@ class Decoder(srd.Decoder):
         ('period', 'Period'),
     )
     annotation_rows = (
-         ('duty-cycle', 'Duty cycle', (0,)),
-         ('period', 'Period', (1,)),
+         ('duty-cycle-vals', 'Duty cycles', (0,)),
+         ('periods', 'Periods', (1,)),
     )
     binary = (
         ('raw', 'RAW file'),
     )
 
     def __init__(self):
+        self.reset()
+
+    def reset(self):
+        self.samplerate = None
         self.ss_block = self.es_block = None
 
     def metadata(self, key, value):
@@ -86,6 +94,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