]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/onewire_link/pd.py
Various PDs: Whitespace, cosmetics.
[libsigrokdecode.git] / decoders / onewire_link / pd.py
index d603dba30af8af3a0733b5655d5a4ee1c5bedb1d..2d4e089d01fb0649cc274dfe97d85301b14a0648 100644 (file)
 
 import sigrokdecode as srd
 
+class SamplerateError(Exception):
+    pass
+
 class Decoder(srd.Decoder):
-    api_version = 1
+    api_version = 2
     id = 'onewire_link'
     name = '1-Wire link layer'
     longname = '1-Wire serial communication bus (link layer)'
@@ -29,41 +32,32 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['onewire_link']
-    probes = (
+    channels = (
         {'id': 'owr', 'name': 'OWR', 'desc': '1-Wire signal line'},
     )
-    optional_probes = (
+    optional_channels = (
         {'id': 'pwr', 'name': 'PWR', 'desc': '1-Wire power supply pin'},
     )
     options = (
         {'id': 'overdrive',
-            'desc': 'Overdrive mode',
-            'default': 'no'},
+            'desc': 'Overdrive mode', 'default': 'no', 'values': ('yes', 'no')},
         # Time options (specified in microseconds):
         {'id': 'cnt_normal_bit',
-            'desc': 'Normal mode sample bit time (μs)',
-            'default': 15},
+            'desc': 'Normal mode sample bit time (μs)', 'default': 15},
         {'id': 'cnt_normal_slot',
-            'desc': 'Normal mode data slot time (μs)',
-            'default': 60},
+            'desc': 'Normal mode data slot time (μs)', 'default': 60},
         {'id': 'cnt_normal_presence',
-            'desc': 'Normal mode sample presence time (μs)',
-            'default': 75},
+            'desc': 'Normal mode sample presence time (μs)', 'default': 75},
         {'id': 'cnt_normal_reset',
-            'desc': 'Normal mode reset time (μs)',
-            'default': 480},
+            'desc': 'Normal mode reset time (μs)', 'default': 480},
         {'id': 'cnt_overdrive_bit',
-            'desc': 'Overdrive mode sample bit time (μs)',
-            'default': 2},
+            'desc': 'Overdrive mode sample bit time (μs)', 'default': 2},
         {'id': 'cnt_overdrive_slot',
-            'desc': 'Overdrive mode data slot time (μs)',
-            'default': 7.3},
+            'desc': 'Overdrive mode data slot time (μs)', 'default': 7.3},
         {'id': 'cnt_overdrive_presence',
-            'desc': 'Overdrive mode sample presence time (μs)',
-            'default': 10},
+            'desc': 'Overdrive mode sample presence time (μs)', 'default': 10},
         {'id': 'cnt_overdrive_reset',
-            'desc': 'Overdrive mode reset time (μs)',
-            'default': 48},
+            'desc': 'Overdrive mode reset time (μs)', 'default': 48},
     )
     annotations = (
         ('bit', 'Bit'),
@@ -191,11 +185,11 @@ class Decoder(srd.Decoder):
         if (time_min < 0.0000073) or (time_max > 0.000010):
             self.putm([1, ['The overdrive mode presence sample time interval ' +
                  '(%2.1fus-%2.1fus) should be inside (7.3us, 10.0us).'
-                 % (time_min*1000000, time_max*1000000)]])
+                 % (time_min * 1000000, time_max * 1000000)]])
 
     def decode(self, ss, es, data):
-        if self.samplerate is None:
-            raise Exception("Cannot decode without samplerate.")
+        if not self.samplerate:
+            raise SamplerateError('Cannot decode without samplerate.')
         for (self.samplenum, (owr, pwr)) in data:
             # State machine.
             if self.state == 'WAIT FOR FALLING EDGE':
@@ -260,10 +254,10 @@ class Decoder(srd.Decoder):
                     # Save the sample number for the rising edge.
                     self.rise = self.samplenum
                     self.putfr([2, ['Reset', 'Rst', 'R']])
-                    self.state = "WAIT FOR PRESENCE DETECT"
+                    self.state = 'WAIT FOR PRESENCE DETECT'
                 # Otherwise this is assumed to be a data bit.
                 else:
-                    self.state = "WAIT FOR FALLING EDGE"
+                    self.state = 'WAIT FOR FALLING EDGE'
             elif self.state == 'WAIT FOR PRESENCE DETECT':
                 # Sample presence status.
                 t = self.samplenum - self.rise
@@ -287,5 +281,3 @@ class Decoder(srd.Decoder):
 
                 # Wait for next slot.
                 self.state = 'WAIT FOR FALLING EDGE'
-            else:
-                raise Exception('Invalid state: %s' % self.state)