]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/timing/pd.py
timing: eliminate magic numbers, remove unused variables
[libsigrokdecode.git] / decoders / timing / pd.py
index be600e906b0beffd3abc89cba882404fb35d9161..03d19e6880d955ccc672b37a1ed127890503cae7 100644 (file)
@@ -45,6 +45,12 @@ def normalize_time(t):
     else:
         return '%f' % t
 
+class Pin:
+    (DATA,) = range(1)
+
+class Ann:
+    (TIME, AVG, DELTA,) = range(3)
+
 class Decoder(srd.Decoder):
     api_version = 3
     id = 'timing'
@@ -53,7 +59,8 @@ class Decoder(srd.Decoder):
     desc = 'Calculate time between edges.'
     license = 'gplv2+'
     inputs = ['logic']
-    outputs = ['timing']
+    outputs = []
+    tags = ['Clock/timing', 'Util']
     channels = (
         {'id': 'data', 'name': 'Data', 'desc': 'Data line'},
     )
@@ -63,9 +70,9 @@ class Decoder(srd.Decoder):
         ('delta', 'Delta'),
     )
     annotation_rows = (
-        ('time', 'Time', (0,)),
-        ('average', 'Average', (1,)),
-        ('delta', 'Delta', (2,)),
+        ('times', 'Times', (Ann.TIME,)),
+        ('averages', 'Averages', (Ann.AVG,)),
+        ('deltas', 'Deltas', (Ann.DELTA,)),
     )
     options = (
         { 'id': 'avg_period', 'desc': 'Averaging period', 'default': 100 },
@@ -74,11 +81,12 @@ class Decoder(srd.Decoder):
     )
 
     def __init__(self):
+        self.reset()
+
+    def reset(self):
         self.samplerate = None
         self.last_samplenum = None
         self.last_n = deque()
-        self.chunks = 0
-        self.level_changed = False
         self.last_t = None
 
     def metadata(self, key, value):
@@ -88,18 +96,17 @@ class Decoder(srd.Decoder):
     def start(self):
         self.out_ann = self.register(srd.OUTPUT_ANN)
         self.edge = self.options['edge']
-        self.initial_pins = [0]
 
     def decode(self):
         if not self.samplerate:
             raise SamplerateError('Cannot decode without samplerate.')
         while True:
             if self.edge == 'rising':
-                pin = self.wait({0: 'r'})
+                pin = self.wait({Pin.DATA: 'r'})
             elif self.edge == 'falling':
-                pin = self.wait({0: 'f'})
+                pin = self.wait({Pin.DATA: 'f'})
             else:
-                pin = self.wait({0: 'e'})
+                pin = self.wait({Pin.DATA: 'e'})
 
             if not self.last_samplenum:
                 self.last_samplenum = self.samplenum
@@ -113,13 +120,13 @@ class Decoder(srd.Decoder):
                 self.last_n.popleft()
 
             self.put(self.last_samplenum, self.samplenum, self.out_ann,
-                     [0, [normalize_time(t)]])
+                     [Ann.TIME, [normalize_time(t)]])
             if self.options['avg_period'] > 0:
                 self.put(self.last_samplenum, self.samplenum, self.out_ann,
-                         [1, [normalize_time(sum(self.last_n) / len(self.last_n))]])
+                         [Ann.AVG, [normalize_time(sum(self.last_n) / len(self.last_n))]])
             if self.last_t and self.options['delta'] == 'yes':
                 self.put(self.last_samplenum, self.samplenum, self.out_ann,
-                         [2, [normalize_time(t - self.last_t)]])
+                         [Ann.DELTA, [normalize_time(t - self.last_t)]])
 
             self.last_t = t
             self.last_samplenum = self.samplenum