]> sigrok.org Git - libsigrokdecode.git/blobdiff - decoders/rc_encode/pd.py
rc_encode: Add self.putx() helper.
[libsigrokdecode.git] / decoders / rc_encode / pd.py
index b57c0adec4ec655622a1a166a0df843b78549b88..1c1f579eb06fb527b5a4f18b9262d513503565ab 100644 (file)
@@ -105,14 +105,17 @@ class Decoder(srd.Decoder):
         self.bits = []
         self.labels = []
         self.bit_count = 0
-        self.bit_first = None
-        self.bit_last = None
+        self.ss = None
+        self.es = None
         self.state = 'IDLE'
 
     def start(self):
         self.out_ann = self.register(srd.OUTPUT_ANN)
         self.model = self.options['remote']
 
+    def putx(self, data):
+        self.put(self.ss, self.es, self.out_ann, data)
+
     def decode(self):
         while True:
             pin = self.wait({0: 'e'})
@@ -120,7 +123,7 @@ class Decoder(srd.Decoder):
 
             if not self.samplenumber_last: # Set counters to start of signal.
                 self.samplenumber_last = self.samplenum
-                self.bit_first = self.samplenum
+                self.ss = self.samplenum
                 continue
 
             if self.bit_count < 12: # Decode A0 to A11.
@@ -131,15 +134,13 @@ class Decoder(srd.Decoder):
                     samples = self.samplenum - self.samplenumber_last
                     self.pulses.append(samples) # Save the pulse width.
                     self.samplenumber_last = self.samplenum
-                self.bit_last = self.samplenum
-                self.bits.append([decode_bit(self.pulses), self.bit_first,
-                                  self.bit_last]) # Save states and times.
-                self.put(self.bit_first, self.bit_last, self.out_ann,
-                         [0, [decode_bit(self.pulses)]]) # Write decoded bit.
-                self.put(self.bit_first, self.bit_last, self.out_ann,
-                         [1, [pinlabels(self.bit_count)]]) # Write pin labels.
+                self.es = self.samplenum
+                self.bits.append([decode_bit(self.pulses), self.ss,
+                                  self.es]) # Save states and times.
+                self.putx([0, [decode_bit(self.pulses)]]) # Write decoded bit.
+                self.putx([1, [pinlabels(self.bit_count)]]) # Write pin labels.
                 self.pulses = []
-                self.bit_first = self.samplenum
+                self.ss = self.samplenum
             else:
                 if self.model != 'none':
                     self.labels = decode_model(self.model, self.bits)
@@ -149,9 +150,8 @@ class Decoder(srd.Decoder):
                              [2, [self.labels[3]]]) # Write model decode.
                 samples = self.samplenum - self.samplenumber_last
                 pin = self.wait({'skip': 8 * samples}) # Wait for end of sync bit.
-                self.bit_last = self.samplenum
-                self.put(self.bit_first, self.bit_last, self.out_ann,
-                         [0, ['Sync']]) # Write sync label.
+                self.es = self.samplenum
+                self.putx([0, ['Sync']]) # Write sync label.
                 self.reset() # Reset and wait for next set of pulses.
                 self.state = 'DECODE_TIMEOUT'
             if not self.state == 'DECODE_TIMEOUT':