]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/stepper_motor/pd.py
decoders: Add/update tags for each PD.
[libsigrokdecode.git] / decoders / stepper_motor / pd.py
index 9ddc6453200366a2c55b000dd866097c0b4a5727..2a1e5f2ea92d0a36426a70465ad2baa398f70de4 100644 (file)
@@ -19,9 +19,6 @@
 
 import sigrokdecode as srd
 
-class SamplerateError(Exception):
-    pass
-
 class Decoder(srd.Decoder):
     api_version = 3
     id = 'stepper_motor'
@@ -31,6 +28,7 @@ class Decoder(srd.Decoder):
     license = 'gplv2+'
     inputs = ['logic']
     outputs = ['stepper_motor']
+    tags = ['Embedded/industrial']
     channels = (
         {'id': 'step', 'name': 'Step', 'desc': 'Step pulse'},
         {'id': 'dir', 'name': 'Direction', 'desc': 'Direction select'},
@@ -53,6 +51,7 @@ class Decoder(srd.Decoder):
         self.reset()
 
     def reset(self):
+        self.samplerate = None
         self.oldstep = None
         self.ss_prev_step = None
         self.pos = 0
@@ -73,12 +72,13 @@ class Decoder(srd.Decoder):
 
     def step(self, ss, direction):
         if self.ss_prev_step is not None:
-            delta = ss - self.ss_prev_step
-            speed = self.samplerate / delta / self.scale
-            speed_txt = self.format % speed
+            if self.samplerate:
+                delta = ss - self.ss_prev_step
+                speed = self.samplerate / delta / self.scale
+                speed_txt = self.format % speed
+                self.put(self.ss_prev_step, ss, self.out_ann,
+                    [0, [speed_txt + ' ' + self.unit + '/s', speed_txt]])
             pos_txt = self.format % (self.pos / self.scale)
-            self.put(self.ss_prev_step, ss, self.out_ann,
-                [0, [speed_txt + ' ' + self.unit + '/s', speed_txt]])
             self.put(self.ss_prev_step, ss, self.out_ann,
                 [1, [pos_txt + ' ' + self.unit, pos_txt]])
 
@@ -90,8 +90,6 @@ class Decoder(srd.Decoder):
             self.samplerate = value
 
     def decode(self):
-        if not self.samplerate:
-            raise SamplerateError('Cannot decode without samplerate.')
         while True:
             step, direction = self.wait({0: 'r'})
             self.step(self.samplenum, direction)