]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/dali/pd.py
dali: Change 'self.dali' to 'dali'.
[libsigrokdecode.git] / decoders / dali / pd.py
index eb76f73eafa4d4211ed6c37de114424321d0d00f..bdb3fe65bacd447d634575f853976084d05d3a55 100644 (file)
@@ -24,7 +24,7 @@ class SamplerateError(Exception):
     pass
 
 class Decoder(srd.Decoder):
-    api_version = 2
+    api_version = 3
     id = 'dali'
     name = 'DALI'
     longname = 'Digital Addressable Lighting Interface'
@@ -52,7 +52,7 @@ class Decoder(srd.Decoder):
     annotation_rows = (
         ('bits', 'Bits', (0,)),
         ('raw', 'Raw data', (7,)),
-        ('fields', 'Fields', (1, 2, 3, 4, 5, 6,)),
+        ('fields', 'Fields', (1, 2, 3, 4, 5, 6)),
     )
 
     def __init__(self):
@@ -60,13 +60,11 @@ class Decoder(srd.Decoder):
         self.samplenum = None
         self.edges, self.bits, self.ss_es_bits = [], [], []
         self.state = 'IDLE'
-        self.nextSamplePoint = None
-        self.nextSample = None
         self.devType = None
 
     def start(self):
         self.out_ann = self.register(srd.OUTPUT_ANN)
-        self.old_ir = 1 if self.options['polarity'] == 'active-low' else 0
+        self.old_dali = 1 if self.options['polarity'] == 'active-low' else 0
 
     def metadata(self, key, value):
         if key == srd.SRD_CONF_SAMPLERATE:
@@ -151,7 +149,6 @@ class Decoder(srd.Decoder):
             s = ['YBit: %d' % b[1][1], 'YB: %d' % b[1][1], 'YB', 'Y', 'Y']
             self.putb(1, 1, [3, s])
             a = f >> 1
-            # x = system.get(a, ['Unknown', 'Unk'])
             s = ['Short address: %d' % a, 'Addr: %d' % a,
                 'Addr: %d' % a, 'A: %d' % a, 'A']
             self.putb(2, 7, [4, s])
@@ -198,58 +195,42 @@ class Decoder(srd.Decoder):
     def reset_decoder_state(self):
         self.edges, self.bits, self.ss_es_bits = [], [], []
         self.state = 'IDLE'
-        # self.devType = None
 
-    def decode(self, ss, es, data):
+    def decode(self):
         if not self.samplerate:
             raise SamplerateError('Cannot decode without samplerate.')
-        bit = 0;
-        for (self.samplenum, pins) in data:
-            self.ir = pins[0]
-            # data.itercnt += 1
-            # data.logic_mask = 1
-            # data.cur_pos = self.samplenum
-            # data.edge_index = -1
+        bit = 0
+        while True:
+            # TODO: Come up with more appropriate self.wait() conditions.
+            (dali,) = self.wait({'skip': 1})
             if self.options['polarity'] == 'active-high':
-                self.ir ^= 1 # Invert.
+                dali ^= 1 # Invert.
 
             # State machine.
             if self.state == 'IDLE':
                 # Wait for any edge (rising or falling).
-                if self.old_ir == self.ir:
-                    # data.exp_logic = self.exp_logic
-                    # data.logic_mask = 1
-                    # logic.cur_pos = self.samplenum
+                if self.old_dali == dali:
                     continue
                 self.edges.append(self.samplenum)
                 self.state = 'PHASE0'
-                self.old_ir = self.ir
-                # Get the next sample point.
-                # self.nextSamplePoint = self.samplenum + int(self.halfbit / 2)
-                self.old_ir = self.ir
-                # bit = self.ir
-                # data.itercnt += int((self.halfbit - 1) * 0.5)
+                self.old_dali = dali
                 continue
 
-            # if(self.samplenum == self.nextSamplePoint):
-            #    bit = self.ir
-            #    continue
-
-            if (self.old_ir != self.ir):
+            if self.old_dali != dali:
                 self.edges.append(self.samplenum)
-            elif (self.samplenum == (self.edges[-1] + int(self.halfbit * 1.5))):
+            elif self.samplenum == (self.edges[-1] + int(self.halfbit * 1.5)):
                 self.edges.append(self.samplenum - int(self.halfbit * 0.5))
             else:
                 continue
 
-            bit = self.old_ir
+            bit = self.old_dali
             if self.state == 'PHASE0':
                 self.phase0 = bit
                 self.state = 'PHASE1'
             elif self.state == 'PHASE1':
-                if (bit == 1) and (self.phase0 == 1): # Stop bit
+                if (bit == 1) and (self.phase0 == 1): # Stop bit.
                     if len(self.bits) == 17 or len(self.bits) == 9:
-                        # Forward or Backward
+                        # Forward or Backward.
                         self.handle_bits(len(self.bits))
                     self.reset_decoder_state() # Reset upon errors.
                     continue
@@ -257,6 +238,4 @@ class Decoder(srd.Decoder):
                     self.bits.append([self.edges[-3], bit])
                     self.state = 'PHASE0'
 
-            # self.nextSamplePoint = self.edges[-1] + int(self.halfbit / 2)
-
-            self.old_ir = self.ir
+            self.old_dali = dali