allow changes-only mode
authorTomas Mudrunka <tomas@mudrunka.cz>
Wed, 18 Mar 2020 15:23:56 +0000 (16:23 +0100)
committerTomas Mudrunka <tomas@mudrunka.cz>
Wed, 18 Mar 2020 15:23:56 +0000 (16:23 +0100)
plugins/sigrok-decoders/caliper/pd.py

index 9a9ad73b7a6d37097226202ce1f43b3646aeb124..3db047309be104c2223fe8032974dce7495ad7c3 100644 (file)
@@ -39,6 +39,7 @@ class Decoder(srd.Decoder):
     options = (
          {'id': 'timeout_ms', 'desc': 'Timeout packet after X ms, 0 to disable', 'default': 10},
          {'id': 'unit', 'desc': 'Convert units', 'default': 'keep', 'values': ('keep', 'mm', 'inch')},
+         {'id': 'changes', 'desc': 'Changes only', 'default': 'no', 'values': ('no', 'yes')},
     )
     tags = ['Analog/digital', 'IC', 'Sensor']
     annotations = (
@@ -74,6 +75,7 @@ class Decoder(srd.Decoder):
         return int(bin(x)[2:].zfill(l)[::-1], 2)
 
     def decode(self):
+        self.last_measurement = None
         while True:
             clk, data = self.wait([{0: 'r'},{'skip': round(self.samplerate/1000)}])
             #print([clk,data])
@@ -143,7 +145,9 @@ class Decoder(srd.Decoder):
             measurement = (str(number)+units)
             #print(measurement)
 
-            self.put(self.ss_cmd, self.es_cmd, self.out_ann, [0, [measurement, str(number)]])
+            if ((self.options['changes'] == 'no') or (self.last_measurement != measurement)):
+                self.put(self.ss_cmd, self.es_cmd, self.out_ann, [0, [measurement, str(number)]])
+                self.last_measurement = measurement
 
             #Prepare for next packet
             self.reset()
This page took 0.149401 seconds and 4 git commands to generate.