Skip to content

Commit 7300de7

Browse files
committed
nvmd
1 parent 7768414 commit 7300de7

File tree

1 file changed

+31
-25
lines changed

1 file changed

+31
-25
lines changed

adafruit_irremote.py

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,28 @@ class IRNECRepeatException(Exception):
5353

5454
class GenericDecode:
5555
def bin_data(self, pulses):
56-
bins = [[pulses[0],0]]
57-
58-
for i in range(len(pulses)):
59-
p = pulses[i]
60-
matchedbin = False
61-
#print(p, end=": ")
62-
for b in range(len(bins)):
63-
bin = bins[b]
64-
if bin[0]*0.75 <= p <= bin[0]*1.25:
65-
#print("matches bin")
66-
bins[b][0] = (bin[0] + p) // 2 # avg em
67-
bins[b][1] += 1 # track it
68-
matchedbin = True
69-
break
70-
if not matchedbin:
71-
bins.append([p, 1])
72-
#print(bins)
73-
return bins
56+
bins = [[pulses[0],0]]
57+
58+
for i in range(len(pulses)):
59+
p = pulses[i]
60+
matchedbin = False
61+
#print(p, end=": ")
62+
for b in range(len(bins)):
63+
bin = bins[b]
64+
if bin[0]*0.75 <= p <= bin[0]*1.25:
65+
#print("matches bin")
66+
bins[b][0] = (bin[0] + p) // 2 # avg em
67+
bins[b][1] += 1 # track it
68+
matchedbin = True
69+
break
70+
if not matchedbin:
71+
bins.append([p, 1])
72+
#print(bins)
73+
return bins
7474

7575
def decode_bits(self, pulses, debug=False):
76-
print("length: ", len(pulses)) if debug
76+
if debug:
77+
print("length: ", len(pulses))
7778

7879
# special exception for NEC repeat code!
7980
if (len(pulses) == 3) and (8000 <= pulses[0] <= 10000) and (2000 <= pulses[1] <= 3000) and (450 <= pulses[2] <= 700):
@@ -86,19 +87,21 @@ def decode_bits(self, pulses, debug=False):
8687
del pulses[0]
8788
if (len(pulses) % 2):
8889
del pulses[0]
89-
print("new length: ", len(pulses)) if debug
90+
if debug:
91+
print("new length: ", len(pulses))
9092

9193
evens = pulses[0::2]
9294
odds = pulses[1::2]
9395
# bin both halves
9496
even_bins = self.bin_data(evens)
9597
odd_bins = self.bin_data(odds)
96-
print("evenbins: ", even_bins, "oddbins:", odd_bins) if debug
98+
if debug: print("evenbins: ", even_bins, "oddbins:", odd_bins)
9799

98100
outliers = [b[0] for b in (even_bins+odd_bins) if b[1] == 1]
99101
even_bins = [b for b in even_bins if (b[1] > 1)]
100102
odd_bins = [b for b in odd_bins if (b[1] > 1)]
101-
print("evenbins: ", even_bins, "oddbins:", odd_bins, "outliers:", outliers) if debug
103+
if debug:
104+
print("evenbins: ", even_bins, "oddbins:", odd_bins, "outliers:", outliers)
102105

103106
if not even_bins or not odd_bins:
104107
raise IRDecodeException("Not enough data")
@@ -112,15 +115,17 @@ def decode_bits(self, pulses, debug=False):
112115
else:
113116
raise IRDecodeException("Both even/odd pulses differ")
114117

115-
print("Pulses:", pulses, "& Bins:", pulse_bins) if debug
118+
if debug:
119+
print("Pulses:", pulses, "& Bins:", pulse_bins)
116120
if len(pulse_bins) == 1:
117121
raise IRDecodeException("Pulses do not differ")
118122
elif len(pulse_bins) > 2:
119123
raise IRDecodeException("Only mark & space handled")
120124

121125
mark = min(pulse_bins[0][0], pulse_bins[1][0])
122126
space = max(pulse_bins[0][0], pulse_bins[1][0])
123-
print("Space:",space,"Mark:",mark) if debug
127+
if debug:
128+
print("Space:",space,"Mark:",mark)
124129

125130
if outliers:
126131
pulses = [p for p in pulses if not (outliers[0]*0.75) <= p <= (outliers[0]*1.25)] # skip outliers
@@ -132,7 +137,8 @@ def decode_bits(self, pulses, debug=False):
132137
pulses[i] = True
133138
else:
134139
raise IRDecodeException("Pulses outside mark/space")
135-
print(len(pulses), pulses) if debug
140+
if debug:
141+
print(len(pulses), pulses)
136142

137143
# convert bits to bytes!
138144
output = [0] * ((len(pulses)+7)//8)

0 commit comments

Comments
 (0)