summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerhard Sittig <gerhard.sittig@gmx.net>2020-08-01 09:29:39 +0200
committerGerhard Sittig <gerhard.sittig@gmx.net>2020-08-30 10:24:44 +0200
commit9ade72a24f1a2c682377649ff7fb8c65393b805b (patch)
tree61e6d35ff1cfa6d6b74119b616d7e27444fef470
parentf559daba9dff62b836ac031bf7b77f0d4412032c (diff)
downloadlibsigrokdecode-9ade72a24f1a2c682377649ff7fb8c65393b805b.tar.gz
libsigrokdecode-9ade72a24f1a2c682377649ff7fb8c65393b805b.zip
ir_nec: sort and comment timing specs, drop tolerance option
Extend comments on the IR NEC timing details. Sort the symbols by their width to reflect their relation (ONE to ZERO to STOP is each half of their predecessor's width). Increase the open coded tolerance percentage, and remove the option for the value. Make sure leader and repeat codes still can be told from each other.
-rw-r--r--decoders/ir_nec/pd.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/decoders/ir_nec/pd.py b/decoders/ir_nec/pd.py
index ecd2b7a..f5c4799 100644
--- a/decoders/ir_nec/pd.py
+++ b/decoders/ir_nec/pd.py
@@ -23,14 +23,16 @@ import sigrokdecode as srd
# Concentrate all timing constraints of the IR protocol here in a single
# location at the top of the source, to raise awareness and to simplify
-# review and adjustment.
-_TIME_TOL = 5 # tolerance, in percent
-_TIME_LC = 13.5 # leader code, in ms
-_TIME_RC = 11.25 # repeat code, in ms
+# review and adjustment. The tolerance is an arbitrary choice, available
+# literature does not mention any. The inter-frame timeout is not a part
+# of the protocol, but an implementation detail of this sigrok decoder.
+_TIME_TOL = 8 # tolerance, in percent
+_TIME_IDLE = 20.0 # inter-frame timeout, in ms
+_TIME_LC = 13.5 # leader code, in ms
+_TIME_RC = 11.25 # repeat code, in ms
+_TIME_ONE = 2.25 # one data bit, in ms
_TIME_ZERO = 1.125 # zero data bit, in ms
-_TIME_ONE = 2.25 # one data bit, in ms
_TIME_STOP = 0.652 # stop bit, in ms
-_TIME_IDLE = 20.0 # inter frame timeout, in ms, arbitrary choice
class SamplerateError(Exception):
pass
@@ -59,7 +61,6 @@ class Decoder(srd.Decoder):
options = (
{'id': 'polarity', 'desc': 'Polarity', 'default': 'active-low',
'values': ('auto', 'active-low', 'active-high')},
- {'id': 'tolerance', 'desc': 'Timing tolerance (%)', 'default': _TIME_TOL},
{'id': 'cd_freq', 'desc': 'Carrier Frequency', 'default': 0},
{'id': 'extended', 'desc': 'Extended NEC Protocol',
'default': 'no', 'values': ('yes', 'no')},
@@ -148,7 +149,7 @@ class Decoder(srd.Decoder):
self.samplerate = value
def calc_rate(self):
- self.tolerance = self.options['tolerance'] / 100
+ self.tolerance = _TIME_TOL / 100
self.lc = int(self.samplerate * _TIME_LC / 1000) - 1
self.rc = int(self.samplerate * _TIME_RC / 1000) - 1
self.dazero = int(self.samplerate * _TIME_ZERO / 1000) - 1