]> sigrok.org Git - libsigrokdecode.git/commitdiff
ir_nec: Make the tolerance configurable
authorBenediktO <redacted>
Mon, 27 Jul 2020 06:32:52 +0000 (08:32 +0200)
committerGerhard Sittig <redacted>
Sun, 30 Aug 2020 08:24:08 +0000 (10:24 +0200)
Provide an option to adjust the IR NEC decoder's tolerance. Which makes
signals accessible that are generated by cheap remotes which would not
decode at all with the previous implementation and its fixed limit.

[ gsi: rephrased commit message and implementation ]

decoders/ir_nec/pd.py

index 05c8c006655797ccf03b323f6cb92660f4e61dda..0d79865bad5add418c9d8585fa498b471eaa4491 100644 (file)
@@ -48,6 +48,7 @@ class Decoder(srd.Decoder):
     options = (
         {'id': 'polarity', 'desc': 'Polarity', 'default': 'active-low',
             'values': ('active-low', 'active-high')},
+        {'id': 'tolerance', 'desc': 'Timing tolerance (%)', 'default': 5},
         {'id': 'cd_freq', 'desc': 'Carrier Frequency', 'default': 0},
         {'id': 'extended', 'desc': 'Extended NEC Protocol',
             'default': 'no', 'values': ('yes', 'no')},
@@ -136,7 +137,7 @@ class Decoder(srd.Decoder):
             self.samplerate = value
 
     def calc_rate(self):
-        self.tolerance = 0.05 # +/-5%
+        self.tolerance = self.options['tolerance'] / 100 # 5% by default
         self.lc = int(self.samplerate * 0.0135) - 1 # 13.5ms
         self.rc = int(self.samplerate * 0.01125) - 1 # 11.25ms
         self.dazero = int(self.samplerate * 0.001125) - 1 # 1.125ms