IRremoteESP8266

IRrecv.h
Go to the documentation of this file.
1 // Copyright 2009 Ken Shirriff
2 // Copyright 2015 Mark Szabo
3 // Copyright 2015 Sebastien Warin
4 // Copyright 2017 David Conran
5
6 #ifndef IRRECV_H_
7 #define IRRECV_H_
8
9 #ifndef UNIT_TEST
10 #include <Arduino.h>
11 #endif
12 #include <stddef.h>
13 #define __STDC_LIMIT_MACROS
14 #include <stdint.h>
15 #include "IRremoteESP8266.h"
16
17 // Constants
18 const uint16_t kHeader = 2; // Usual nr. of header entries.
19 const uint16_t kFooter = 2; // Usual nr. of footer (stop bits) entries.
20 const uint16_t kStartOffset = 1; // Usual rawbuf entry to start from.
21 #define MS_TO_USEC(x) ((x) * 1000U) // Convert milli-Seconds to micro-Seconds.
22 // Marks tend to be 100us too long, and spaces 100us too short
23 // when received due to sensor lag.
24 const uint16_t kMarkExcess = 50;
25 const uint16_t kRawBuf = 100; // Default length of raw capture buffer
26 const uint64_t kRepeat = UINT64_MAX;
27 // Default min size of reported UNKNOWN messages.
28 const uint16_t kUnknownThreshold = 6;
29
30 // receiver states
31 const uint8_t kIdleState = 2;
32 const uint8_t kMarkState = 3;
33 const uint8_t kSpaceState = 4;
34 const uint8_t kStopState = 5;
35 const uint8_t kTolerance = 25; // default percent tolerance in measurements.
36 const uint8_t kUseDefTol = 255; // Indicate to use the class default tolerance.
37 const uint16_t kRawTick = 2; // Capture tick to uSec factor.
38 #define RAWTICK kRawTick // Deprecated. For legacy user code support only.
39 // How long (ms) before we give up wait for more data?
40 // Don't exceed kMaxTimeoutMs without a good reason.
41 // That is the capture buffers maximum value size. (UINT16_MAX / kRawTick)
42 // Typically messages/protocols tend to repeat around the 100ms timeframe,
43 // thus we should timeout before that to give us some time to try to decode
44 // before we need to start capturing a possible new message.
45 // Typically 15ms suits most applications. However, some protocols demand a
46 // higher value. e.g. 90ms for XMP-1 and some aircon units.
47 const uint8_t kTimeoutMs = 15; // In MilliSeconds.
48 #define TIMEOUT_MS kTimeoutMs // For legacy documentation.
49 const uint16_t kMaxTimeoutMs = kRawTick * (UINT16_MAX / MS_TO_USEC(1));
50
51 // Use FNV hash algorithm: http://isthe.com/chongo/tech/comp/fnv/#FNV-param
52 const uint32_t kFnvPrime32 = 16777619UL;
53 const uint32_t kFnvBasis32 = 2166136261UL;
54
55 #ifdef ESP32
56 // Which of the ESP32 timers to use by default.
57 // (3 for most ESP32s, 1 for ESP32-C3s)
58 #ifdef SOC_TIMER_GROUP_TOTAL_TIMERS
59 const uint8_t kDefaultESP32Timer = SOC_TIMER_GROUP_TOTAL_TIMERS - 1;
60 #else // SOC_TIMER_GROUP_TOTAL_TIMERS
61 const uint8_t kDefaultESP32Timer = 3;
62 #endif // SOC_TIMER_GROUP_TOTAL_TIMERS
63 #endif // ESP32
64
65 #if DECODE_AC
66 // Hitachi AC is the current largest state size.
67 const uint16_t kStateSizeMax = kHitachiAc2StateLength;
68 #else // DECODE_AC
69 // Just define something (a uint64_t)
70 const uint16_t kStateSizeMax = sizeof(uint64_t);
71 #endif // DECODE_AC
72
73 // Types
74
76 typedef struct {
77 uint8_t recvpin; // pin for IR data from detector
78 uint8_t rcvstate; // state machine
79 uint16_t timer; // state timer, counts 50uS ticks.
80 uint16_t bufsize; // max. nr. of entries in the capture buffer.
81 uint16_t *rawbuf; // raw data
82 // uint16_t is used for rawlen as it saves 3 bytes of iram in the interrupt
83 // handler. Don't ask why, I don't know. It just does.
84 uint16_t rawlen; // counter of entries in rawbuf.
85 uint8_t overflow; // Buffer overflow indicator.
86 uint8_t timeout; // Nr. of milliSeconds before we give up.
87 } irparams_t;
88
90 typedef struct {
91 bool success; // Was the match successful?
92 uint64_t data; // The data found.
93 uint16_t used; // How many buffer positions were used.
94 } match_result_t;
95
96 // Classes
97
99 class decode_results {
100 public:
101 decode_type_t decode_type; // NEC, SONY, RC5, UNKNOWN
102 // value, address, & command are all mutually exclusive with state.
103 // i.e. They MUST NOT be used at the same time as state, so we can use a union
104 // structure to save us a handful of valuable bytes of memory.
105 union {
106 struct {
107 uint64_t value; // Decoded value
108 uint32_t address; // Decoded device address.
109 uint32_t command; // Decoded command.
110 };
111 uint8_t state[kStateSizeMax]; // Multi-byte results.
112 };
113 uint16_t bits; // Number of bits in decoded value
114 volatile uint16_t *rawbuf; // Raw intervals in .5 us ticks
115 uint16_t rawlen; // Number of records in rawbuf.
116 bool overflow;
117 bool repeat; // Is the result a repeat code?
118 };
119
121 class IRrecv {
122 public:
123 #if defined(ESP32)
124 explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
125 const uint8_t timeout = kTimeoutMs,
126 const bool save_buffer = false,
127 const uint8_t timer_num = kDefaultESP32Timer); // Constructor
128 #else // ESP32
129 explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
130 const uint8_t timeout = kTimeoutMs,
131 const bool save_buffer = false); // Constructor
132 #endif // ESP32
133 ~IRrecv(void); // Destructor
134 void setTolerance(const uint8_t percent = kTolerance);
135 uint8_t getTolerance(void);
136 bool decode(decode_results *results, irparams_t *save = NULL,
137 uint8_t max_skip = 0, uint16_t noise_floor = 0);
138 void enableIRIn(const bool pullup = false);
139 void disableIRIn(void);
140 void pause(void);
141 void resume(void);
142 uint16_t getBufSize(void);
143 #if DECODE_HASH
144 void setUnknownThreshold(const uint16_t length);
145 #endif
146 bool match(const uint32_t measured, const uint32_t desired,
147 const uint8_t tolerance = kUseDefTol,
148 const uint16_t delta = 0);
149 bool matchMark(const uint32_t measured, const uint32_t desired,
150 const uint8_t tolerance = kUseDefTol,
151 const int16_t excess = kMarkExcess);
152 bool matchMarkRange(const uint32_t measured, const uint32_t desired,
153 const uint16_t range = 100,
154 const int16_t excess = kMarkExcess);
155 bool matchSpace(const uint32_t measured, const uint32_t desired,
156 const uint8_t tolerance = kUseDefTol,
157 const int16_t excess = kMarkExcess);
158 bool matchSpaceRange(const uint32_t measured, const uint32_t desired,
159 const uint16_t range = 100,
160 const int16_t excess = kMarkExcess);
161 #ifndef UNIT_TEST
162
163 private:
164 #endif
165 irparams_t *irparams_save;
166 uint8_t _tolerance;
167 #if defined(ESP32)
168 uint8_t _timer_num;
169 #endif // defined(ESP32)
170 #if DECODE_HASH
171 uint16_t _unknown_threshold;
172 #endif
173 #ifdef UNIT_TEST
174 volatile irparams_t *_getParamsPtr(void);
175 #endif // UNIT_TEST
176 // These are called by decode
177 uint8_t _validTolerance(const uint8_t percentage);
178 void copyIrParams(volatile irparams_t *src, irparams_t *dst);
179 uint16_t compare(const uint16_t oldval, const uint16_t newval);
180 uint32_t ticksLow(const uint32_t usecs,
181 const uint8_t tolerance = kUseDefTol,
182 const uint16_t delta = 0);
183 uint32_t ticksHigh(const uint32_t usecs,
184 const uint8_t tolerance = kUseDefTol,
185 const uint16_t delta = 0);
186 bool matchAtLeast(const uint32_t measured, const uint32_t desired,
187 const uint8_t tolerance = kUseDefTol,
188 const uint16_t delta = 0);
189 uint16_t _matchGeneric(volatile uint16_t *data_ptr,
190 uint64_t *result_bits_ptr,
191 uint8_t *result_ptr,
192 const bool use_bits,
193 const uint16_t remaining,
194 const uint16_t required,
195 const uint16_t hdrmark,
196 const uint32_t hdrspace,
197 const uint16_t onemark,
198 const uint32_t onespace,
199 const uint16_t zeromark,
200 const uint32_t zerospace,
201 const uint16_t footermark,
202 const uint32_t footerspace,
203 const bool atleast = false,
204 const uint8_t tolerance = kUseDefTol,
205 const int16_t excess = kMarkExcess,
206 const bool MSBfirst = true);
207 match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits,
208 const uint16_t onemark, const uint32_t onespace,
209 const uint16_t zeromark, const uint32_t zerospace,
210 const uint8_t tolerance = kUseDefTol,
211 const int16_t excess = kMarkExcess,
212 const bool MSBfirst = true,
213 const bool expectlastspace = true);
214 uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr,
215 const uint16_t remaining, const uint16_t nbytes,
216 const uint16_t onemark, const uint32_t onespace,
217 const uint16_t zeromark, const uint32_t zerospace,
218 const uint8_t tolerance = kUseDefTol,
219 const int16_t excess = kMarkExcess,
220 const bool MSBfirst = true,
221 const bool expectlastspace = true);
222 uint16_t matchGeneric(volatile uint16_t *data_ptr,
223 uint64_t *result_ptr,
224 const uint16_t remaining, const uint16_t nbits,
225 const uint16_t hdrmark, const uint32_t hdrspace,
226 const uint16_t onemark, const uint32_t onespace,
227 const uint16_t zeromark, const uint32_t zerospace,
228 const uint16_t footermark, const uint32_t footerspace,
229 const bool atleast = false,
230 const uint8_t tolerance = kUseDefTol,
231 const int16_t excess = kMarkExcess,
232 const bool MSBfirst = true);
233 uint16_t matchGeneric(volatile uint16_t *data_ptr, uint8_t *result_ptr,
234 const uint16_t remaining, const uint16_t nbits,
235 const uint16_t hdrmark, const uint32_t hdrspace,
236 const uint16_t onemark, const uint32_t onespace,
237 const uint16_t zeromark, const uint32_t zerospace,
238 const uint16_t footermark,
239 const uint32_t footerspace,
240 const bool atleast = false,
241 const uint8_t tolerance = kUseDefTol,
242 const int16_t excess = kMarkExcess,
243 const bool MSBfirst = true);
244 uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr,
245 uint64_t *result_ptr,
246 const uint16_t remaining,
247 const uint16_t nbits,
248 const uint16_t hdrmark,
249 const uint32_t hdrspace,
250 const uint16_t one,
251 const uint32_t zero,
252 const uint16_t footermark,
253 const uint32_t footerspace,
254 const bool atleast = false,
255 const uint8_t tolerance = kUseDefTol,
256 const int16_t excess = kMarkExcess,
257 const bool MSBfirst = true);
258 uint16_t matchManchesterData(volatile const uint16_t *data_ptr,
259 uint64_t *result_ptr,
260 const uint16_t remaining,
261 const uint16_t nbits,
262 const uint16_t half_period,
263 const uint16_t starting_balance = 0,
264 const uint8_t tolerance = kUseDefTol,
265 const int16_t excess = kMarkExcess,
266 const bool MSBfirst = true,
267 const bool GEThomas = true);
268 uint16_t matchManchester(volatile const uint16_t *data_ptr,
269 uint64_t *result_ptr,
270 const uint16_t remaining,
271 const uint16_t nbits,
272 const uint16_t hdrmark,
273 const uint32_t hdrspace,
274 const uint16_t clock_period,
275 const uint16_t footermark,
276 const uint32_t footerspace,
277 const bool atleast = false,
278 const uint8_t tolerance = kUseDefTol,
279 const int16_t excess = kMarkExcess,
280 const bool MSBfirst = true,
281 const bool GEThomas = true);
282 void crudeNoiseFilter(decode_results *results, const uint16_t floor = 0);
283 bool decodeHash(decode_results *results);
284 #if DECODE_VOLTAS
285 bool decodeVoltas(decode_results *results,
286 uint16_t offset = kStartOffset,
287 const uint16_t nbits = kVoltasBits,
288 const bool strict = true);
289 #endif // DECODE_VOLTAS
290 #if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO)
291 bool decodeNEC(decode_results *results, uint16_t offset = kStartOffset,
292 const uint16_t nbits = kNECBits, const bool strict = true);
293 #endif
294 #if DECODE_ARGO
295 bool decodeArgo(decode_results *results, uint16_t offset = kStartOffset,
296 const uint16_t nbits = kArgoBits, const bool strict = true);
297 bool decodeArgoWREM3(decode_results *results, uint16_t offset = kStartOffset,
298 const uint16_t nbits = kArgo3AcControlStateLength * 8,
299 const bool strict = true);
300 #endif // DECODE_ARGO
301 #if DECODE_ARRIS
302 bool decodeArris(decode_results *results, uint16_t offset = kStartOffset,
303 const uint16_t nbits = kArrisBits, const bool strict = true);
304 #endif // DECODE_ARRIS
305 #if DECODE_SONY
306 bool decodeSony(decode_results *results, uint16_t offset = kStartOffset,
307 const uint16_t nbits = kSonyMinBits,
308 const bool strict = false);
309 #endif
310 #if DECODE_SANYO
311 // DISABLED due to poor quality.
312 // bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,
313 // uint16_t nbits = kSanyoSA8650BBits,
314 // bool strict = false);
315 bool decodeSanyoLC7461(decode_results *results,
316 uint16_t offset = kStartOffset,
317 const uint16_t nbits = kSanyoLC7461Bits,
318 const bool strict = true);
319 #endif
320 #if DECODE_SANYO_AC
321 bool decodeSanyoAc(decode_results *results,
322 uint16_t offset = kStartOffset,
323 const uint16_t nbits = kSanyoAcBits,
324 const bool strict = true);
325 #endif // DECODE_SANYO_AC
326 #if DECODE_SANYO_AC88
327 bool decodeSanyoAc88(decode_results *results,
328 uint16_t offset = kStartOffset,
329 const uint16_t nbits = kSanyoAc88Bits,
330 const bool strict = true);
331 #endif // DECODE_SANYO_AC88
332 #if DECODE_SANYO_AC152
333 bool decodeSanyoAc152(decode_results *results,
334 uint16_t offset = kStartOffset,
335 const uint16_t nbits = kSanyoAc152Bits,
336 const bool strict = true);
337 #endif // DECODE_SANYO_AC152
338 #if DECODE_MITSUBISHI
339 bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset,
340 const uint16_t nbits = kMitsubishiBits,
341 const bool strict = true);
342 #endif
343 #if DECODE_MITSUBISHI2
344 bool decodeMitsubishi2(decode_results *results,
345 uint16_t offset = kStartOffset,
346 const uint16_t nbits = kMitsubishiBits,
347 const bool strict = true);
348 #endif
349 #if DECODE_MITSUBISHI_AC
350 bool decodeMitsubishiAC(decode_results *results,
351 uint16_t offset = kStartOffset,
352 const uint16_t nbits = kMitsubishiACBits,
353 const bool strict = false);
354 #endif
355 #if DECODE_MITSUBISHI136
356 bool decodeMitsubishi136(decode_results *results,
357 uint16_t offset = kStartOffset,
358 const uint16_t nbits = kMitsubishi136Bits,
359 const bool strict = true);
360 #endif
361 #if DECODE_MITSUBISHI112
362 bool decodeMitsubishi112(decode_results *results,
363 uint16_t offset = kStartOffset,
364 const uint16_t nbits = kMitsubishi112Bits,
365 const bool strict = true);
366 #endif
367 #if DECODE_MITSUBISHIHEAVY
368 bool decodeMitsubishiHeavy(decode_results *results,
369 uint16_t offset = kStartOffset,
370 const uint16_t nbits = kMitsubishiHeavy152Bits,
371 const bool strict = true);
372 #endif
373 #if (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG || DECODE_MWM)
374 int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used,
375 uint16_t bitTime, const uint8_t tolerance = kUseDefTol,
376 const int16_t excess = kMarkExcess,
377 const uint16_t delta = 0, const uint8_t maxwidth = 3);
378 #endif
379 #if DECODE_RC5
380 bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset,
381 const uint16_t nbits = kRC5XBits,
382 const bool strict = true);
383 #endif
384 #if DECODE_RC6
385 bool decodeRC6(decode_results *results, uint16_t offset = kStartOffset,
386 const uint16_t nbits = kRC6Mode0Bits,
387 const bool strict = false);
388 #endif
389 #if DECODE_RCMM
390 bool decodeRCMM(decode_results *results, uint16_t offset = kStartOffset,
391 const uint16_t nbits = kRCMMBits,
392 const bool strict = false);
393 #endif
394 #if (DECODE_PANASONIC || DECODE_DENON)
395 bool decodePanasonic(decode_results *results, uint16_t offset = kStartOffset,
396 const uint16_t nbits = kPanasonicBits,
397 const bool strict = false,
398 const uint32_t manufacturer = kPanasonicManufacturer);
399 #endif
400 #if DECODE_LG
401 bool decodeLG(decode_results *results, uint16_t offset = kStartOffset,
402 const uint16_t nbits = kLgBits,
403 const bool strict = false);
404 #endif
405 #if DECODE_INAX
406 bool decodeInax(decode_results *results, uint16_t offset = kStartOffset,
407 const uint16_t nbits = kInaxBits,
408 const bool strict = true);
409 #endif // DECODE_INAX
410 #if DECODE_JVC
411 bool decodeJVC(decode_results *results, uint16_t offset = kStartOffset,
412 const uint16_t nbits = kJvcBits,
413 const bool strict = true);
414 #endif
415 #if DECODE_SAMSUNG
416 bool decodeSAMSUNG(decode_results *results, uint16_t offset = kStartOffset,
417 const uint16_t nbits = kSamsungBits,
418 const bool strict = true);
419 #endif
420 #if DECODE_SAMSUNG
421 bool decodeSamsung36(decode_results *results, uint16_t offset = kStartOffset,
422 const uint16_t nbits = kSamsung36Bits,
423 const bool strict = true);
424 #endif
425 #if DECODE_SAMSUNG_AC
426 bool decodeSamsungAC(decode_results *results, uint16_t offset = kStartOffset,
427 const uint16_t nbits = kSamsungAcBits,
428 const bool strict = true);
429 #endif
430 #if DECODE_WHYNTER
431 bool decodeWhynter(decode_results *results, uint16_t offset = kStartOffset,
432 const uint16_t nbits = kWhynterBits,
433 const bool strict = true);
434 #endif
435 #if DECODE_COOLIX
436 bool decodeCOOLIX(decode_results *results, uint16_t offset = kStartOffset,
437 const uint16_t nbits = kCoolixBits,
438 const bool strict = true);
439 #endif // DECODE_COOLIX
440 #if DECODE_COOLIX48
441 bool decodeCoolix48(decode_results *results, uint16_t offset = kStartOffset,
442 const uint16_t nbits = kCoolix48Bits,
443 const bool strict = true);
444 #endif // DECODE_COOLIX48
445 #if DECODE_DENON
446 bool decodeDenon(decode_results *results, uint16_t offset = kStartOffset,
447 const uint16_t nbits = kDenonBits,
448 const bool strict = true);
449 #endif
450 #if DECODE_DISH
451 bool decodeDISH(decode_results *results, uint16_t offset = kStartOffset,
452 const uint16_t nbits = kDishBits,
453 const bool strict = true);
454 #endif
455 #if (DECODE_SHARP || DECODE_DENON)
456 bool decodeSharp(decode_results *results, uint16_t offset = kStartOffset,
457 const uint16_t nbits = kSharpBits,
458 const bool strict = true, const bool expansion = true);
459 #endif
460 #if DECODE_SHARP_AC
461 bool decodeSharpAc(decode_results *results, uint16_t offset = kStartOffset,
462 const uint16_t nbits = kSharpAcBits,
463 const bool strict = true);
464 #endif
465 #if DECODE_AIWA_RC_T501
466 bool decodeAiwaRCT501(decode_results *results, uint16_t offset = kStartOffset,
467 const uint16_t nbits = kAiwaRcT501Bits,
468 const bool strict = true);
469 #endif
470 #if DECODE_NIKAI
471 bool decodeNikai(decode_results *results, uint16_t offset = kStartOffset,
472 const uint16_t nbits = kNikaiBits,
473 const bool strict = true);
474 #endif
475 #if DECODE_MAGIQUEST
476 bool decodeMagiQuest(decode_results *results, uint16_t offset = kStartOffset,
477 const uint16_t nbits = kMagiquestBits,
478 const bool strict = true);
479 #endif
480 #if DECODE_KELVINATOR
481 bool decodeKelvinator(decode_results *results, uint16_t offset = kStartOffset,
482 const uint16_t nbits = kKelvinatorBits,
483 const bool strict = true);
484 #endif
485 #if DECODE_DAIKIN
486 bool decodeDaikin(decode_results *results, uint16_t offset = kStartOffset,
487 const uint16_t nbits = kDaikinBits,
488 const bool strict = true);
489 #endif
490 #if DECODE_DAIKIN64
491 bool decodeDaikin64(decode_results *results, uint16_t offset = kStartOffset,
492 const uint16_t nbits = kDaikin64Bits,
493 const bool strict = true);
494 #endif // DECODE_DAIKIN64
495 #if DECODE_DAIKIN128
496 bool decodeDaikin128(decode_results *results, uint16_t offset = kStartOffset,
497 const uint16_t nbits = kDaikin128Bits,
498 const bool strict = true);
499 #endif // DECODE_DAIKIN128
500 #if DECODE_DAIKIN152
501 bool decodeDaikin152(decode_results *results, uint16_t offset = kStartOffset,
502 const uint16_t nbits = kDaikin152Bits,
503 const bool strict = true);
504 #endif // DECODE_DAIKIN152
505 #if DECODE_DAIKIN160
506 bool decodeDaikin160(decode_results *results, uint16_t offset = kStartOffset,
507 const uint16_t nbits = kDaikin160Bits,
508 const bool strict = true);
509 #endif // DECODE_DAIKIN160
510 #if DECODE_DAIKIN176
511 bool decodeDaikin176(decode_results *results, uint16_t offset = kStartOffset,
512 const uint16_t nbits = kDaikin176Bits,
513 const bool strict = true);
514 #endif // DECODE_DAIKIN176
515 #if DECODE_DAIKIN2
516 bool decodeDaikin2(decode_results *results, uint16_t offset = kStartOffset,
517 const uint16_t nbits = kDaikin2Bits,
518 const bool strict = true);
519 #endif
520 #if DECODE_DAIKIN200
521 bool decodeDaikin200(decode_results *results, uint16_t offset = kStartOffset,
522 const uint16_t nbits = kDaikin200Bits,
523 const bool strict = true);
524 #endif // DECODE_DAIKIN200
525 #if DECODE_DAIKIN216
526 bool decodeDaikin216(decode_results *results, uint16_t offset = kStartOffset,
527 const uint16_t nbits = kDaikin216Bits,
528 const bool strict = true);
529 #endif // DECODE_DAIKIN216
530 #if DECODE_DAIKIN312
531 bool decodeDaikin312(decode_results *results, uint16_t offset = kStartOffset,
532 const uint16_t nbits = kDaikin312Bits,
533 const bool strict = true);
534 #endif // DECODE_DAIKIN312
535 #if DECODE_TOSHIBA_AC
536 bool decodeToshibaAC(decode_results *results, uint16_t offset = kStartOffset,
537 const uint16_t nbits = kToshibaACBits,
538 const bool strict = true);
539 #endif
540 #if DECODE_TROTEC
541 bool decodeTrotec(decode_results *results, uint16_t offset = kStartOffset,
542 const uint16_t nbits = kTrotecBits,
543 const bool strict = true);
544 #endif // DECODE_TROTEC
545 #if DECODE_TROTEC_3550
546 bool decodeTrotec3550(decode_results *results, uint16_t offset = kStartOffset,
547 const uint16_t nbits = kTrotecBits,
548 const bool strict = true);
549 #endif // DECODE_TROTEC_3550
550 #if DECODE_MIDEA
551 bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset,
552 const uint16_t nbits = kMideaBits,
553 const bool strict = true);
554 #endif // DECODE_MIDEA
555 #if DECODE_MIDEA24
556 bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset,
557 const uint16_t nbits = kMidea24Bits,
558 const bool strict = true);
559 #endif // DECODE_MIDEA24
560 #if DECODE_FUJITSU_AC
561 bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset,
562 const uint16_t nbits = kFujitsuAcBits,
563 const bool strict = false);
564 #endif
565 #if DECODE_LASERTAG
566 bool decodeLasertag(decode_results *results, uint16_t offset = kStartOffset,
567 const uint16_t nbits = kLasertagBits,
568 const bool strict = true);
569 #endif
570 #if DECODE_MILESTAG2
571 bool decodeMilestag2(decode_results *results, uint16_t offset = kStartOffset,
572 const uint16_t nbits = kMilesTag2ShotBits,
573 const bool strict = true);
574 #endif
575 #if DECODE_CARRIER_AC
576 bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
577 const uint16_t nbits = kCarrierAcBits,
578 const bool strict = true);
579 #endif // DECODE_CARRIER_AC
580 #if DECODE_CARRIER_AC40
581 bool decodeCarrierAC40(decode_results *results,
582 uint16_t offset = kStartOffset,
583 const uint16_t nbits = kCarrierAc40Bits,
584 const bool strict = true);
585 #endif // DECODE_CARRIER_AC40
586 #if DECODE_CARRIER_AC84
587 bool decodeCarrierAC84(decode_results *results,
588 uint16_t offset = kStartOffset,
589 const uint16_t nbits = kCarrierAc84Bits,
590 const bool strict = true);
591 #endif // DECODE_CARRIER_AC84
592 #if DECODE_CARRIER_AC64
593 bool decodeCarrierAC64(decode_results *results,
594 uint16_t offset = kStartOffset,
595 const uint16_t nbits = kCarrierAc64Bits,
596 const bool strict = true);
597 #endif // DECODE_CARRIER_AC64
598 #if DECODE_CARRIER_AC128
599 bool decodeCarrierAC128(decode_results *results,
600 uint16_t offset = kStartOffset,
601 const uint16_t nbits = kCarrierAc128Bits,
602 const bool strict = true);
603 #endif // DECODE_CARRIER_AC128
604 #if DECODE_GOODWEATHER
605 bool decodeGoodweather(decode_results *results,
606 uint16_t offset = kStartOffset,
607 const uint16_t nbits = kGoodweatherBits,
608 const bool strict = true);
609 #endif // DECODE_GOODWEATHER
610 #if DECODE_GORENJE
611 bool decodeGorenje(decode_results *results, uint16_t offset = kStartOffset,
612 const uint16_t nbits = kGorenjeBits,
613 const bool strict = true);
614 #endif // DECODE_GORENJE
615 #if DECODE_GREE
616 bool decodeGree(decode_results *results, uint16_t offset = kStartOffset,
617 const uint16_t nbits = kGreeBits,
618 const bool strict = true);
619 #endif
620 #if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02 || DECODE_HAIER_AC160 || \
621 DECODE_HAIER_AC176)
622 bool decodeHaierAC(decode_results *results, uint16_t offset = kStartOffset,
623 const uint16_t nbits = kHaierACBits,
624 const bool strict = true);
625 #endif
626 #if DECODE_HAIER_AC_YRW02
627 bool decodeHaierACYRW02(decode_results *results,
628 uint16_t offset = kStartOffset,
629 const uint16_t nbits = kHaierACYRW02Bits,
630 const bool strict = true);
631 #endif
632 #if DECODE_HAIER_AC160
633 bool decodeHaierAC160(decode_results *results,
634 uint16_t offset = kStartOffset,
635 const uint16_t nbits = kHaierAC160Bits,
636 const bool strict = true);
637 #endif // DECODE_HAIER_AC160
638 #if DECODE_HAIER_AC176
639 bool decodeHaierAC176(decode_results *results,
640 uint16_t offset = kStartOffset,
641 const uint16_t nbits = kHaierAC176Bits,
642 const bool strict = true);
643 #endif // DECODE_HAIER_AC176
644 #if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC264 || \
645 DECODE_HITACHI_AC344)
646 bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset,
647 const uint16_t nbits = kHitachiAcBits,
648 const bool strict = true, const bool MSBfirst = true);
649 #endif // (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC264 ||
650 // DECODE_HITACHI_AC344)
651 #if DECODE_HITACHI_AC1
652 bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset,
653 const uint16_t nbits = kHitachiAc1Bits,
654 const bool strict = true);
655 #endif
656 #if DECODE_HITACHI_AC3
657 bool decodeHitachiAc3(decode_results *results,
658 uint16_t offset = kStartOffset,
659 const uint16_t nbits = kHitachiAc3Bits,
660 const bool strict = true);
661 #endif // DECODE_HITACHI_AC3
662 #if DECODE_HITACHI_AC296
663 bool decodeHitachiAc296(decode_results *results,
664 uint16_t offset = kStartOffset,
665 const uint16_t nbits = kHitachiAc296Bits,
666 const bool strict = true);
667 #endif // DECODE_HITACHI_AC296
668 #if DECODE_HITACHI_AC424
669 bool decodeHitachiAc424(decode_results *results,
670 uint16_t offset = kStartOffset,
671 const uint16_t nbits = kHitachiAc424Bits,
672 const bool strict = true);
673 #endif // DECODE_HITACHI_AC424
674 #if DECODE_GICABLE
675 bool decodeGICable(decode_results *results, uint16_t offset = kStartOffset,
676 const uint16_t nbits = kGicableBits,
677 const bool strict = true);
678 #endif
679 #if DECODE_WHIRLPOOL_AC
680 bool decodeWhirlpoolAC(decode_results *results,
681 uint16_t offset = kStartOffset,
682 const uint16_t nbits = kWhirlpoolAcBits,
683 const bool strict = true);
684 #endif
685 #if DECODE_LUTRON
686 bool decodeLutron(decode_results *results, uint16_t offset = kStartOffset,
687 const uint16_t nbits = kLutronBits,
688 const bool strict = true);
689 #endif
690 #if DECODE_ELECTRA_AC
691 bool decodeElectraAC(decode_results *results, uint16_t offset = kStartOffset,
692 const uint16_t nbits = kElectraAcBits,
693 const bool strict = true);
694 #endif
695 #if DECODE_PANASONIC_AC
696 bool decodePanasonicAC(decode_results *results,
697 uint16_t offset = kStartOffset,
698 const uint16_t nbits = kPanasonicAcBits,
699 const bool strict = true);
700 #endif // DECODE_PANASONIC_AC
701 #if DECODE_PANASONIC_AC32
702 bool decodePanasonicAC32(decode_results *results,
703 uint16_t offset = kStartOffset,
704 const uint16_t nbits = kPanasonicAc32Bits,
705 const bool strict = true);
706 #endif // DECODE_PANASONIC_AC32
707 #if DECODE_PIONEER
708 bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
709 const uint16_t nbits = kPioneerBits,
710 const bool strict = true);
711 #endif
712 #if DECODE_MWM
713 bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
714 const uint16_t nbits = 24,
715 const bool strict = true);
716 #endif
717 #if DECODE_VESTEL_AC
718 bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
719 const uint16_t nbits = kVestelAcBits,
720 const bool strict = true);
721 #endif
722 #if DECODE_TECO
723 bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
724 const uint16_t nbits = kTecoBits,
725 const bool strict = false);
726 #endif
727 #if DECODE_LEGOPF
728 bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
729 const uint16_t nbits = kLegoPfBits,
730 const bool strict = true);
731 #endif
732 #if DECODE_NEOCLIMA
733 bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
734 const uint16_t nbits = kNeoclimaBits,
735 const bool strict = true);
736 #endif // DECODE_NEOCLIMA
737 #if DECODE_AMCOR
738 bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
739 const uint16_t nbits = kAmcorBits,
740 const bool strict = true);
741 #endif // DECODE_AMCOR
742 #if DECODE_EPSON
743 bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
744 const uint16_t nbits = kEpsonBits,
745 const bool strict = true);
746 #endif // DECODE_EPSON
747 #if DECODE_SYMPHONY
748 bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
749 const uint16_t nbits = kSymphonyBits,
750 const bool strict = true);
751 #endif // DECODE_SYMPHONY
752 #if DECODE_AIRWELL
753 bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
754 const uint16_t nbits = kAirwellBits,
755 const bool strict = true);
756 #endif // DECODE_AIRWELL
757 #if DECODE_DELONGHI_AC
758 bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
759 const uint16_t nbits = kDelonghiAcBits,
760 const bool strict = true);
761 #endif // DECODE_DELONGHI_AC
762 #if DECODE_DOSHISHA
763 bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
764 const uint16_t nbits = kDoshishaBits,
765 const bool strict = true);
766 #endif // DECODE_DOSHISHA
767 #if DECODE_MULTIBRACKETS
768 bool decodeMultibrackets(decode_results *results,
769 uint16_t offset = kStartOffset,
770 const uint16_t nbits = kMultibracketsBits,
771 const bool strict = true);
772 #endif // DECODE_MULTIBRACKETS
773 #if DECODE_TECHNIBEL_AC
774 bool decodeTechnibelAc(decode_results *results,
775 uint16_t offset = kStartOffset,
776 const uint16_t nbits = kTechnibelAcBits,
777 const bool strict = true);
778 #endif // DECODE_TECHNIBEL_AC
779 #if DECODE_CORONA_AC
780 bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
781 const uint16_t nbits = kCoronaAcBitsShort,
782 const bool strict = true);
783 #endif // DECODE_CORONA_AC
784 #if DECODE_ZEPEAL
785 bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
786 const uint16_t nbits = kZepealBits,
787 const bool strict = true);
788 #endif // DECODE_ZEPEAL
789 #if DECODE_METZ
790 bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
791 const uint16_t nbits = kMetzBits,
792 const bool strict = true);
793 #endif // DECODE_METZ
794 #if DECODE_TRANSCOLD
795 bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
796 const uint16_t nbits = kTranscoldBits,
797 const bool strict = true);
798 #endif // DECODE_TRANSCOLD
799 #if DECODE_MIRAGE
800 bool decodeMirage(decode_results *results,
801 uint16_t offset = kStartOffset,
802 const uint16_t nbits = kMirageBits,
803 const bool strict = true);
804 #endif // DECODE_MIRAGE
805 #if DECODE_ELITESCREENS
806 bool decodeElitescreens(decode_results *results,
807 uint16_t offset = kStartOffset,
808 const uint16_t nbits = kEliteScreensBits,
809 const bool strict = true);
810 #endif // DECODE_ELITESCREENS
811 #if DECODE_ECOCLIM
812 bool decodeEcoclim(decode_results *results, uint16_t offset = kStartOffset,
813 const uint16_t nbits = kEcoclimBits,
814 const bool strict = true);
815 #endif // DECODE_ECOCLIM
816 #if DECODE_XMP
817 bool decodeXmp(decode_results *results, uint16_t offset = kStartOffset,
818 const uint16_t nbits = kXmpBits, const bool strict = true);
819 #endif // DECODE_XMP
820 #if DECODE_TRUMA
821 bool decodeTruma(decode_results *results, uint16_t offset = kStartOffset,
822 const uint16_t nbits = kTrumaBits, const bool strict = true);
823 #endif // DECODE_TRUMA
824 #if DECODE_TEKNOPOINT
825 bool decodeTeknopoint(decode_results *results, uint16_t offset = kStartOffset,
826 const uint16_t nbits = kTeknopointBits,
827 const bool strict = true);
828 #endif // DECODE_TEKNOPOINT
829 #if DECODE_KELON
830 bool decodeKelon(decode_results *results, uint16_t offset = kStartOffset,
831 const uint16_t nbits = kKelonBits, const bool strict = true);
832 #endif // DECODE_KELON
833 #if DECODE_KELON168
834 bool decodeKelon168(decode_results *results, uint16_t offset = kStartOffset,
835 const uint16_t nbits = kKelon168Bits,
836 const bool strict = true);
837 #endif // DECODE_KELON168
838 #if DECODE_BOSE
839 bool decodeBose(decode_results *results, uint16_t offset = kStartOffset,
840 const uint16_t nbits = kBoseBits, const bool strict = true);
841 #endif // DECODE_BOSE
842 #if DECODE_RHOSS
843 bool decodeRhoss(decode_results *results, uint16_t offset = kStartOffset,
844 const uint16_t nbits = kRhossBits, const bool strict = true);
845 #endif // DECODE_RHOSS
846 #if DECODE_AIRTON
847 bool decodeAirton(decode_results *results, uint16_t offset = kStartOffset,
848 const uint16_t nbits = kAirtonBits,
849 const bool strict = true);
850 #endif // DECODE_AIRTON
851 #if DECODE_TOTO
852 bool decodeToto(decode_results *results, uint16_t offset = kStartOffset,
853 const uint16_t nbits = kTotoBits,
854 const bool strict = true);
855 #endif // DECODE_TOTO
856 #if DECODE_CLIMABUTLER
857 bool decodeClimaButler(decode_results *results,
858 uint16_t offset = kStartOffset,
859 const uint16_t nbits = kClimaButlerBits,
860 const bool strict = true);
861 #endif // DECODE_CLIMABUTLER
862 #if DECODE_TCL96AC
863 bool decodeTcl96Ac(decode_results *results,
864 uint16_t offset = kStartOffset,
865 const uint16_t nbits = kTcl96AcBits,
866 const bool strict = true);
867 #endif // DECODE_TCL96AC
868 #if DECODE_BOSCH144
869 bool decodeBosch144(decode_results *results,
870 uint16_t offset = kStartOffset,
871 const uint16_t nbits = kBosch144Bits,
872 const bool strict = true);
873 #endif // DECODE_BOSCH144
874 #if DECODE_WOWWEE
875 bool decodeWowwee(decode_results *results,
876 uint16_t offset = kStartOffset,
877 const uint16_t nbits = kWowweeBits,
878 const bool strict = true);
879 #endif // DECODE_WOWWEE
880 #if DECODE_YORK
881 bool decodeYork(decode_results *results,
882 uint16_t kStartOffset,
883 const uint16_t kYorkBits,
884 const bool strict = true);
885 #endif // DECODE_YORK
886 };
887
888 #endif // IRRECV_H_
IRrecv::decodeMultibrackets
bool decodeMultibrackets(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMultibracketsBits, const bool strict=true)
Decode the Multibrackets message. Status: BETA / Appears to be working.
Definition: ir_Multibrackets.cpp:59
IRrecv::matchBytes
uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr, const uint16_t remaining, const uint16_t nbytes, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)
Match & decode the typical data section of an IR message. The bytes are stored at result_ptr....
Definition: IRrecv.cpp:1512
IRrecv::decodeRhoss
bool decodeRhoss(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRhossBits, const bool strict=true)
Decode the supplied Rhoss formatted message. Status: STABLE / Known working.
Definition: ir_Rhoss.cpp:59
kDelonghiAcBits
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:1220
IRrecv::decodeMitsubishi
bool decodeMitsubishi(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
Decode the supplied Mitsubishi 16-bit message. Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:126
kRhossBits
const uint16_t kRhossBits
Definition: IRremoteESP8266.h:1433
kCarrierAc128Bits
const uint16_t kCarrierAc128Bits
Definition: IRremoteESP8266.h:1183
kMirageBits
const uint16_t kMirageBits
Definition: IRremoteESP8266.h:1308
IRrecv::decodeKelon168
bool decodeKelon168(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelon168Bits, const bool strict=true)
Decode the supplied Kelon 168 bit / 21 byte message. Status: BETA / Probably Working.
Definition: ir_Kelon.cpp:505
IRrecv::decodeHaierAC
bool decodeHaierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACBits, const bool strict=true)
Decode the supplied Haier HSU07-HEA03 remote message. Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:1350
IRrecv::decodeNEC
bool decodeNEC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNECBits, const bool strict=true)
Decode the supplied NEC (Renesas) message. Status: STABLE / Known good.
Definition: ir_NEC.cpp:81
kFnvPrime32
const uint32_t kFnvPrime32
Definition: IRrecv.h:52
decode_results::overflow
bool overflow
Definition: IRrecv.h:116
IRrecv::decodeDaikin128
bool decodeDaikin128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin128Bits, const bool strict=true)
Decode the supplied Daikin 128-bit message. (DAIKIN128) Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:2922
kGicableBits
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:1244
IRrecv::matchGeneric
uint16_t matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
Match & decode a generic/typical <= 64bit IR message. The data is stored at result_ptr.
Definition: IRrecv.cpp:1666
decode_type_t
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:1011
kCarrierAcBits
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:1173
IRrecv::decodeTranscold
bool decodeTranscold(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTranscoldBits, const bool strict=true)
Decode the supplied Transcold A/C message. Status: STABLE / Known Working.
Definition: ir_Transcold.cpp:441
IRrecv::getRClevel
int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used, uint16_t bitTime, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const uint16_t delta=0, const uint8_t maxwidth=3)
Gets one undecoded level at a time from the raw buffer. The RC5/6 decoding is easier if the data is b...
Definition: ir_RC5_RC6.cpp:243
IRrecv::decodeBosch144
bool decodeBosch144(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kBosch144Bits, const bool strict=true)
Decode the supplied Bosch 144-bit / 18-byte A/C message. Status: STABLE / Confirmed Working.
Definition: ir_Bosch.cpp:288
kArgo3AcControlStateLength
const uint16_t kArgo3AcControlStateLength
Definition: IRremoteESP8266.h:1162
kMultibracketsBits
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:1329
kSharpAcBits
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:1378
kWhynterBits
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1419
IRrecv::decodeSanyoAc
bool decodeSanyoAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAcBits, const bool strict=true)
Decode the supplied SanyoAc message. Status: STABLE / Reported as working.
Definition: ir_Sanyo.cpp:291
irparams_t::overflow
uint8_t overflow
Definition: IRrecv.h:85
IRrecv::decodeMitsubishi2
bool decodeMitsubishi2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiBits, const bool strict=true)
Decode the supplied second variation of a Mitsubishi 16-bit message. Status: STABLE / Working.
Definition: ir_Mitsubishi.cpp:191
IRrecv::decodeGree
bool decodeGree(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGreeBits, const bool strict=true)
Decode the supplied Gree HVAC message. Status: STABLE / Working.
Definition: ir_Gree.cpp:695
kAirwellBits
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:1150
IRrecv::irparams_save
irparams_t * irparams_save
Definition: IRrecv.h:165
kGorenjeBits
const uint16_t kGorenjeBits
Definition: IRremoteESP8266.h:1248
kMitsubishiACBits
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:1315
IRrecv::decodeFujitsuAC
bool decodeFujitsuAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kFujitsuAcBits, const bool strict=false)
Decode the supplied Fujitsu AC IR message if possible. Status: STABLE / Working.
Definition: ir_Fujitsu.cpp:1003
IRrecv::decodeSanyoAc88
bool decodeSanyoAc88(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAc88Bits, const bool strict=true)
Decode the supplied SanyoAc88 message. Status: ALPHA / Untested.
Definition: ir_Sanyo.cpp:710
kArrisBits
const uint16_t kArrisBits
Definition: IRremoteESP8266.h:1167
IRrecv::matchMarkRange
bool matchMarkRange(const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)
Check if we match a mark signal(measured) with the desired within a range (in uSeconds) either side o...
Definition: IRrecv.cpp:1335
kTechnibelAcBits
const uint16_t kTechnibelAcBits
Definition: IRremoteESP8266.h:1222
IRrecv::decodeTrotec
bool decodeTrotec(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)
Decode the supplied Trotec message. Status: STABLE / Works. Untested on real devices.
Definition: ir_Trotec.cpp:316
IRrecv::decodeNeoclima
bool decodeNeoclima(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNeoclimaBits, const bool strict=true)
Decode the supplied Neoclima message. Status: STABLE / Known working.
Definition: ir_Neoclima.cpp:571
IRrecv::decodeDaikin200
bool decodeDaikin200(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin200Bits, const bool strict=true)
Decode the supplied Daikin 200-bit message. (DAIKIN200) Status: STABLE / Known to be working.
Definition: ir_Daikin.cpp:3779
kVoltasBits
const uint16_t kVoltasBits
Definition: IRremoteESP8266.h:1426
IRrecv::decodeMitsubishi112
bool decodeMitsubishi112(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi112Bits, const bool strict=true)
Decode the supplied Mitsubishi/TCL 112-bit A/C message. (MITSUBISHI112, TCL112AC) Status: STABLE / Re...
Definition: ir_Mitsubishi.cpp:1291
IRrecv::decodeSamsungAC
bool decodeSamsungAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungAcBits, const bool strict=true)
Decode the supplied Samsung A/C message. Status: Stable / Known to be working.
Definition: ir_Samsung.cpp:955
kDaikin200Bits
const uint16_t kDaikin200Bits
Definition: IRremoteESP8266.h:1212
IRrecv::decodeAirwell
bool decodeAirwell(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirwellBits, const bool strict=true)
Decode the supplied Airwell "Manchester code" message.
Definition: ir_Airwell.cpp:53
kRC5XBits
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:1350
IRrecv::decodeMagiQuest
bool decodeMagiQuest(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMagiquestBits, const bool strict=true)
Decode the supplied MagiQuest message. Status: Beta / Should work.
Definition: ir_Magiquest.cpp:69
irparams_t::rawlen
uint16_t rawlen
Definition: IRrecv.h:84
kUseDefTol
const uint8_t kUseDefTol
Definition: IRrecv.h:36
IRrecv::decodeDelonghiAc
bool decodeDelonghiAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDelonghiAcBits, const bool strict=true)
Decode the supplied Delonghi A/C message. Status: STABLE / Expected to be working.
Definition: ir_Delonghi.cpp:58
IRrecv
Class for receiving IR messages.
Definition: IRrecv.h:121
irparams_t::bufsize
uint16_t bufsize
Definition: IRrecv.h:80
decode_results
Results returned from the decoder.
Definition: IRrecv.h:99
IRrecv::matchGenericConstBitTime
uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t one, const uint32_t zero, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
Match & decode a generic/typical constant bit time <= 64bit IR message. The data is stored at result_...
Definition: IRrecv.cpp:1760
kCarrierAc84Bits
const uint16_t kCarrierAc84Bits
Definition: IRremoteESP8266.h:1180
kBoseBits
const uint16_t kBoseBits
Definition: IRremoteESP8266.h:1431
kClimaButlerBits
const uint16_t kClimaButlerBits
Definition: IRremoteESP8266.h:1435
IRrecv::decodeCarrierAC64
bool decodeCarrierAC64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc64Bits, const bool strict=true)
Decode the supplied Carrier 64-bit HVAC message. Status: STABLE / Known to be working.
Definition: ir_Carrier.cpp:215
kCoolixBits
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:1170
IRrecv::decodeArgo
bool decodeArgo(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgoBits, const bool strict=true)
Decode the supplied Argo message (WREM2). Status: BETA / Probably works.
Definition: ir_Argo.cpp:1683
IRrecv::decodeCarrierAC128
bool decodeCarrierAC128(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc128Bits, const bool strict=true)
Decode the supplied Carrier 128-bit HVAC message. Status: STABLE / Expected to work.
Definition: ir_Carrier.cpp:606
kCoronaAcBitsShort
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:1187
match_result_t::data
uint64_t data
Definition: IRrecv.h:92
IRrecv::decodeWowwee
bool decodeWowwee(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWowweeBits, const bool strict=true)
Decode the supplied WowWee message. Status: STABLE / Confirmed working with real device.
Definition: ir_Wowwee.cpp:69
kSamsung36Bits
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:1355
kMagiquestBits
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:1300
irparams_t::rawbuf
uint16_t * rawbuf
Definition: IRrecv.h:81
irparams_t
Information for the interrupt handler.
Definition: IRrecv.h:76
IRrecv::getBufSize
uint16_t getBufSize(void)
Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.
Definition: IRrecv.cpp:464
kSanyoLC7461Bits
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:1372
decode_results::repeat
bool repeat
Definition: IRrecv.h:117
IRrecv::decodeHitachiAC
bool decodeHitachiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAcBits, const bool strict=true, const bool MSBfirst=true)
Decode the supplied Hitachi A/C message. Status: STABLE / Expected to work.
Definition: ir_Hitachi.cpp:857
kTrotecBits
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1413
IRrecv::decodeVestelAc
bool decodeVestelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVestelAcBits, const bool strict=true)
Decode the supplied Vestel message. Status: Alpha / Needs testing against a real device.
Definition: ir_Vestel.cpp:537
kIdleState
const uint8_t kIdleState
Definition: IRrecv.h:31
IRrecv::decodeAmcor
bool decodeAmcor(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAmcorBits, const bool strict=true)
Decode the supplied Amcor HVAC message. Status: STABLE / Reported as working.
Definition: ir_Amcor.cpp:58
IRrecv::decodeDaikin
bool decodeDaikin(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikinBits, const bool strict=true)
Decode the supplied Daikin 280-bit message. (DAIKIN) Status: STABLE / Reported as working.
Definition: ir_Daikin.cpp:599
IRrecv::decodeTeknopoint
bool decodeTeknopoint(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTeknopointBits, const bool strict=true)
Decode the supplied Teknopoint message. Status: Alpha / Probably works.
Definition: ir_Teknopoint.cpp:50
IRrecv::decodeHaierAC176
bool decodeHaierAC176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierAC176Bits, const bool strict=true)
Decode the supplied Haier 176 bit remote A/C message. Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:1429
kEliteScreensBits
const uint16_t kEliteScreensBits
Definition: IRremoteESP8266.h:1237
irparams_t::recvpin
uint8_t recvpin
Definition: IRrecv.h:77
irparams_t::timer
uint16_t timer
Definition: IRrecv.h:79
IRrecv::decodeDaikin64
bool decodeDaikin64(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin64Bits, const bool strict=true)
Decode the supplied Daikin 64-bit message. (DAIKIN64) Status: Beta / Probably Working.
Definition: ir_Daikin.cpp:3372
IRrecv::decodeMetz
bool decodeMetz(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMetzBits, const bool strict=true)
Decode the supplied Metz message. Status: BETA / Probably works.
Definition: ir_Metz.cpp:67
match_result_t::success
bool success
Definition: IRrecv.h:91
IRrecv::decodeDaikin2
bool decodeDaikin2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin2Bits, const bool strict=true)
Decode the supplied Daikin 312-bit message. (DAIKIN2) Status: STABLE / Works as expected.
Definition: ir_Daikin.cpp:1333
kElectraAcBits
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:1235
IRrecv::matchSpace
bool matchSpace(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
Check if we match a space signal(measured) with the desired within +/-tolerance percent,...
Definition: IRrecv.cpp:1354
kSonyMinBits
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:1385
kHaierAC176Bits
const uint16_t kHaierAC176Bits
Definition: IRremoteESP8266.h:1262
kStopState
const uint8_t kStopState
Definition: IRrecv.h:34
decode_results::rawlen
uint16_t rawlen
Definition: IRrecv.h:115
kMaxTimeoutMs
const uint16_t kMaxTimeoutMs
Definition: IRrecv.h:49
IRrecv::decodePanasonicAC32
bool decodePanasonicAC32(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAc32Bits, const bool strict=true)
Decode the supplied Panasonic AC 32/16bit message. Status: STABLE / Confirmed working.
Definition: ir_Panasonic.cpp:991
kDaikin2Bits
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:1195
IRrecv::decodePanasonic
bool decodePanasonic(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicBits, const bool strict=false, const uint32_t manufacturer=kPanasonicManufacturer)
Decode the supplied Panasonic message. Status: STABLE / Should be working.
Definition: ir_Panasonic.cpp:128
kHitachiAc1Bits
const uint16_t kHitachiAc1Bits
Definition: IRremoteESP8266.h:1268
IRrecv::decodeElectraAC
bool decodeElectraAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kElectraAcBits, const bool strict=true)
Decode the supplied Electra A/C message. Status: STABLE / Known working.
Definition: ir_Electra.cpp:426
IRrecv::decodeDaikin216
bool decodeDaikin216(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin216Bits, const bool strict=true)
Decode the supplied Daikin 216-bit message. (DAIKIN216) Status: STABLE / Should be working.
Definition: ir_Daikin.cpp:1680
IRrecv::decodeDaikin152
bool decodeDaikin152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin152Bits, const bool strict=true)
Decode the supplied Daikin 152-bit message. (DAIKIN152) Status: STABLE / Known Working.
Definition: ir_Daikin.cpp:3011
kBosch144Bits
const uint16_t kBosch144Bits
Definition: IRremoteESP8266.h:1169
IRrecv::decodeCarrierAC84
bool decodeCarrierAC84(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc84Bits, const bool strict=true)
Decode the supplied Carroer A/C 84 Bit formatted message. Status: STABLE / Confirmed Working.
Definition: ir_Carrier.cpp:698
IRrecv::decodeSanyoAc152
bool decodeSanyoAc152(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAc152Bits, const bool strict=true)
Decode the supplied SanyoAc152 message. Status: BETA / Probably works.
Definition: ir_Sanyo.cpp:1021
IRrecv::decodeElitescreens
bool decodeElitescreens(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEliteScreensBits, const bool strict=true)
Decode the supplied Elite Screens message. Status: STABLE / Confirmed working.
Definition: ir_EliteScreens.cpp:63
IRrecv::decodeDenon
bool decodeDenon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDenonBits, const bool strict=true)
Decode the supplied Delonghi A/C message. Status: STABLE / Should work fine.
Definition: ir_Denon.cpp:70
IRrecv::decodeBose
bool decodeBose(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kBoseBits, const bool strict=true)
Decode the supplied Bose formatted message. Status: STABLE / Known working.
Definition: ir_Bose.cpp:48
kPanasonicBits
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:1336
kMilesTag2ShotBits
const uint16_t kMilesTag2ShotBits
Definition: IRremoteESP8266.h:1428
decode_results::decode_type
decode_type_t decode_type
Definition: IRrecv.h:101
kSanyoAc152Bits
const uint16_t kSanyoAc152Bits
Definition: IRremoteESP8266.h:1367
kPanasonicAcBits
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:1342
IRrecv::decodeTechnibelAc
bool decodeTechnibelAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTechnibelAcBits, const bool strict=true)
Status: STABLE / Reported as working on a real device.
Definition: ir_Technibel.cpp:54
kRepeat
const uint64_t kRepeat
Definition: IRrecv.h:26
IRrecv::setTolerance
void setTolerance(const uint8_t percent=kTolerance)
Set the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:477
kXmpBits
const uint16_t kXmpBits
Definition: IRremoteESP8266.h:1423
IRrecv::decodeMidea
bool decodeMidea(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMideaBits, const bool strict=true)
Decode the supplied Midea message. Status: Alpha / Needs testing against a real device.
Definition: ir_Midea.cpp:756
IRrecv::decodeVoltas
bool decodeVoltas(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kVoltasBits, const bool strict=true)
Decode the supplied Voltas message. Status: STABLE / Working on real device.
Definition: ir_Voltas.cpp:61
IRrecv::decodeAirton
bool decodeAirton(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAirtonBits, const bool strict=true)
Decode the supplied Airton message. Status: STABLE / Confirmed working. LSBF ordering confirmed via t...
Definition: ir_Airton.cpp:52
kDaikin160Bits
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:1200
IRrecv::decodeGorenje
bool decodeGorenje(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGorenjeBits, const bool strict=true)
Decode the supplied Gorenje Cooker Hood message. Status: STABLE / Known working.
Definition: ir_Gorenje.cpp:49
IRrecv::copyIrParams
void copyIrParams(volatile irparams_t *src, irparams_t *dst)
Make a copy of the interrupt state & buffer data. Needed because irparams is marked as volatile,...
Definition: IRrecv.cpp:440
IRrecv::decodeKelvinator
bool decodeKelvinator(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelvinatorBits, const bool strict=true)
Decode the supplied Kelvinator message. Status: STABLE / Known working.
Definition: ir_Kelvinator.cpp:515
kGoodweatherBits
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:1246
IRrecv::decodeMWM
bool decodeMWM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=24, const bool strict=true)
Decode the supplied MWM message. Status: Implemented.
Definition: ir_MWM.cpp:81
IRrecv::enableIRIn
void enableIRIn(const bool pullup=false)
Set up and (re)start the IR capture mechanism.
Definition: IRrecv.cpp:349
kDaikin152Bits
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:1206
IRrecv::matchSpaceRange
bool matchSpaceRange(const uint32_t measured, const uint32_t desired, const uint16_t range=100, const int16_t excess=kMarkExcess)
Check if we match a space signal(measured) with the desired within a range (in uSeconds) either side ...
Definition: IRrecv.cpp:1374
IRrecv::decodePanasonicAC
bool decodePanasonicAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPanasonicAcBits, const bool strict=true)
Decode the supplied Panasonic AC message. Status: STABLE / Works with real device(s).
Definition: ir_Panasonic.cpp:862
kKelonBits
const uint16_t kKelonBits
Definition: IRremoteESP8266.h:1286
IRrecv::decodeDaikin312
bool decodeDaikin312(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin312Bits, const bool strict=true)
Decode the supplied Daikin 312-bit / 39-byte message. (DAIKIN312) Status: STABLE / Confirmed working.
Definition: ir_Daikin.cpp:3871
IRrecv::decodeDoshisha
bool decodeDoshisha(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDoshishaBits, const bool strict=true)
Decode the supplied Doshisha message. Status: STABLE / Works on real device.
Definition: ir_Doshisha.cpp:85
IRrecv::decodeZepeal
bool decodeZepeal(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kZepealBits, const bool strict=true)
Decode the supplied Zepeal message. Status: STABLE / Works on real device.
Definition: ir_Zepeal.cpp:67
IRrecv::decodeDaikin160
bool decodeDaikin160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin160Bits, const bool strict=true)
Decode the supplied Daikin 160-bit message. (DAIKIN160) Status: STABLE / Confirmed working.
Definition: ir_Daikin.cpp:2035
IRrecv::decodeLasertag
bool decodeLasertag(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLasertagBits, const bool strict=true)
Decode the supplied Lasertag message. Status: BETA / Appears to be working 90% of the time.
Definition: ir_Lasertag.cpp:70
IRremoteESP8266.h
kTimeoutMs
const uint8_t kTimeoutMs
Definition: IRrecv.h:47
IRrecv::_matchGeneric
uint16_t _matchGeneric(volatile uint16_t *data_ptr, uint64_t *result_bits_ptr, uint8_t *result_ptr, const bool use_bits, const uint16_t remaining, const uint16_t required, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true)
Match & decode a generic/typical IR message. The data is stored in result_bits_ptr or result_bytes_pt...
Definition: IRrecv.cpp:1564
kMarkState
const uint8_t kMarkState
Definition: IRrecv.h:32
IRrecv::setUnknownThreshold
void setUnknownThreshold(const uint16_t length)
Set the minimum length we will consider for reporting UNKNOWN message types.
Definition: IRrecv.cpp:469
IRrecv::decodeHaierAC160
bool decodeHaierAC160(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierAC160Bits, const bool strict=true)
Decode the supplied Haier 160 bit remote A/C message. Status: STABLE / Known to be working.
Definition: ir_Haier.cpp:1463
kSymphonyBits
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:1387
kHitachiAc296Bits
const uint16_t kHitachiAc296Bits
Definition: IRremoteESP8266.h:1278
IRrecv::decodeMirage
bool decodeMirage(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMirageBits, const bool strict=true)
Decode the supplied Mirage message. Status: STABLE / Reported as working.
Definition: ir_Mirage.cpp:73
kRC6Mode0Bits
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:1351
kStateSizeMax
const uint16_t kStateSizeMax
Definition: IRrecv.h:67
match_result_t
Results from a data match.
Definition: IRrecv.h:90
IRrecv::decodeTrotec3550
bool decodeTrotec3550(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrotecBits, const bool strict=true)
Decode the supplied Trotec 3550 message. Status: STABLE / Known to be working.
Definition: ir_Trotec.cpp:376
irparams_t::rcvstate
uint8_t rcvstate
Definition: IRrecv.h:78
kMetzBits
const uint16_t kMetzBits
Definition: IRremoteESP8266.h:1301
IRrecv::decodeRC6
bool decodeRC6(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC6Mode0Bits, const bool strict=false)
Decode the supplied RC6 message. Status: Stable.
Definition: ir_RC5_RC6.cpp:383
IRrecv::decodeRC5
bool decodeRC5(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRC5XBits, const bool strict=true)
Decode the supplied RC-5/RC5X message. Status: RC-5 (stable), RC-5X (alpha)
Definition: ir_RC5_RC6.cpp:309
IRrecv::~IRrecv
~IRrecv(void)
Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the...
Definition: IRrecv.cpp:334
IRrecv::decodeHitachiAc3
bool decodeHitachiAc3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc3Bits, const bool strict=true)
Decode the supplied Hitachi 15to27-byte/120to216-bit A/C message. Status: STABLE / Works fine.
Definition: ir_Hitachi.cpp:1443
IRrecv::decodeWhynter
bool decodeWhynter(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhynterBits, const bool strict=true)
Decode the supplied Whynter message. Status: STABLE / Working. Strict mode is ALPHA.
Definition: ir_Whynter.cpp:74
IRrecv::decodeClimaButler
bool decodeClimaButler(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kClimaButlerBits, const bool strict=true)
Decode the supplied ClimaButler message. Status: STABLE / Confirmed working.
Definition: ir_ClimaButler.cpp:56
IRrecv::decodeCarrierAC
bool decodeCarrierAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAcBits, const bool strict=true)
Decode the supplied Carrier HVAC message.
Definition: ir_Carrier.cpp:102
kMitsubishiHeavy152Bits
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:1327
kDoshishaBits
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:1229
kCarrierAc40Bits
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:1175
kStartOffset
const uint16_t kStartOffset
Definition: IRrecv.h:20
kAmcorBits
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:1156
IRrecv::decodeRCMM
bool decodeRCMM(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kRCMMBits, const bool strict=false)
Decode a Philips RC-MM packet (between 12 & 32 bits) if possible. Status: STABLE / Should be working.
Definition: ir_RCMM.cpp:96
IRrecv::IRrecv
IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)
Class constructor Args:
Definition: IRrecv.cpp:267
IRrecv::decodeMitsubishi136
bool decodeMitsubishi136(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishi136Bits, const bool strict=true)
Decode the supplied Mitsubishi 136-bit A/C message. (MITSUBISHI136) Status: STABLE / Reported as work...
Definition: ir_Mitsubishi.cpp:917
decode_results::rawbuf
volatile uint16_t * rawbuf
Definition: IRrecv.h:114
kTolerance
const uint8_t kTolerance
Definition: IRrecv.h:35
IRrecv::decodeSharp
bool decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
Decode the supplied Sharp message. Status: STABLE / Working fine.
Definition: ir_Sharp.cpp:157
match_result_t::used
uint16_t used
Definition: IRrecv.h:93
kPanasonicManufacturer
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:1337
decode_results::address
uint32_t address
Definition: IRrecv.h:108
IRrecv::decodeNikai
bool decodeNikai(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kNikaiBits, const bool strict=true)
Decode the supplied Nikai message. Status: STABLE / Working.
Definition: ir_Nikai.cpp:52
kMitsubishiBits
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:1310
IRrecv::match
bool match(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Check if we match a pulse(measured) with the desired within +/-tolerance percent and/or +/- a fixed d...
Definition: IRrecv.cpp:1241
IRrecv::decodeSymphony
bool decodeSymphony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSymphonyBits, const bool strict=true)
Decode the supplied Symphony packet/message. Status: STABLE / Should be working.
Definition: ir_Symphony.cpp:69
IRrecv::decodeTruma
bool decodeTruma(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTrumaBits, const bool strict=true)
Decode the supplied Truma message. Status: STABLE / Confirmed working with real device.
Definition: ir_Truma.cpp:65
kSamsungAcBits
const uint16_t kSamsungAcBits
Definition: IRremoteESP8266.h:1357
kUnknownThreshold
const uint16_t kUnknownThreshold
Definition: IRrecv.h:28
kMideaBits
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:1303
IRrecv::decodeAiwaRCT501
bool decodeAiwaRCT501(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kAiwaRcT501Bits, const bool strict=true)
Decode the supplied Aiwa RC T501 message. Status: BETA / Should work.
Definition: ir_Aiwa.cpp:61
kKelvinatorBits
const uint16_t kKelvinatorBits
Definition: IRremoteESP8266.h:1290
IRrecv::decodeGICable
bool decodeGICable(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGicableBits, const bool strict=true)
Decode the supplied G.I. Cable message. Status: Alpha / Not tested against a real device.
Definition: ir_GICable.cpp:63
IRrecv::decodeTeco
bool decodeTeco(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTecoBits, const bool strict=false)
Decode the supplied Teco message. Status: STABLE / Tested.
Definition: ir_Teco.cpp:353
kTcl96AcBits
const uint16_t kTcl96AcBits
Definition: IRremoteESP8266.h:1390
IRrecv::decodeSanyoLC7461
bool decodeSanyoLC7461(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoLC7461Bits, const bool strict=true)
Decode the supplied SANYO LC7461 message. Status: BETA / Probably works.
Definition: ir_Sanyo.cpp:154
IRrecv::decodeCarrierAC40
bool decodeCarrierAC40(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCarrierAc40Bits, const bool strict=true)
Decode the supplied Carrier 40-bit HVAC message. Carrier HVAC messages contain only 40 bits,...
Definition: ir_Carrier.cpp:167
kNECBits
const uint16_t kNECBits
Definition: IRremoteESP8266.h:1332
kDenonBits
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:1224
kHaierACBits
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:1253
IRrecv::matchAtLeast
bool matchAtLeast(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Check if we match a pulse(measured) of at least desired within tolerance percent and/or a fixed delta...
Definition: IRrecv.cpp:1272
kZepealBits
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1424
kMidea24Bits
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:1305
IRrecv::decodeKelon
bool decodeKelon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelonBits, const bool strict=true)
Decode the supplied Kelon 48-bit message. Status: STABLE / Working.
Definition: ir_Kelon.cpp:75
IRrecv::decodeDaikin176
bool decodeDaikin176(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDaikin176Bits, const bool strict=true)
Decode the supplied Daikin 176-bit message. (DAIKIN176) Status: STABLE / Expected to work.
Definition: ir_Daikin.cpp:2427
kNeoclimaBits
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:1334
kWhirlpoolAcBits
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1417
IRrecv::decodeSharpAc
bool decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)
Decode the supplied Sharp A/C message. Status: STABLE / Known working.
Definition: ir_Sharp.cpp:947
IRrecv::decodeJVC
bool decodeJVC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kJvcBits, const bool strict=true)
Decode the supplied JVC message. Status: Stable / Known working.
Definition: ir_JVC.cpp:94
kHaierAC160Bits
const uint16_t kHaierAC160Bits
Definition: IRremoteESP8266.h:1259
IRrecv::decodeEcoclim
bool decodeEcoclim(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEcoclimBits, const bool strict=true)
Decode the supplied EcoClim A/C message. Status: STABLE / Confirmed working on real remote.
Definition: ir_Ecoclim.cpp:68
IRrecv::decodeMitsubishiAC
bool decodeMitsubishiAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiACBits, const bool strict=false)
Decode the supplied Mitsubish 144-bit A/C message. Status: BETA / Probably works.
Definition: ir_Mitsubishi.cpp:257
kCarrierAc64Bits
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:1177
kPioneerBits
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:1346
decode_results::bits
uint16_t bits
Definition: IRrecv.h:113
kGreeBits
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:1250
IRrecv::decodeCoolix48
bool decodeCoolix48(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolix48Bits, const bool strict=true)
Decode the supplied Coolix 48-bit A/C message. Status: BETA / Probably Working.
Definition: ir_Coolix.cpp:738
kJvcBits
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:1285
kYorkBits
const uint16_t kYorkBits
Definition: IRremoteESP8266.h:1436
kLasertagBits
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:1292
kDaikin128Bits
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:1203
kAiwaRcT501Bits
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:1152
IRrecv::ticksLow
uint32_t ticksLow(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Calculate the lower bound of the nr. of ticks.
Definition: IRrecv.cpp:1215
kTrumaBits
const uint16_t kTrumaBits
Definition: IRremoteESP8266.h:1415
kTecoBits
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:1395
IRrecv::decodeEpson
bool decodeEpson(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEpsonBits, const bool strict=true)
Decode the supplied Epson message. Status: Beta / Probably works.
Definition: ir_Epson.cpp:52
kToshibaACBits
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1400
kKelon168Bits
const uint16_t kKelon168Bits
Definition: IRremoteESP8266.h:1288
IRrecv::decodeSony
bool decodeSony(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSonyMinBits, const bool strict=false)
Decode the supplied Sony/SIRC message. Status: STABLE / Should be working. strict mode is ALPHA / Unt...
Definition: ir_Sony.cpp:122
kDaikinBits
const uint16_t kDaikinBits
Definition: IRremoteESP8266.h:1190
IRrecv::matchMark
bool matchMark(const uint32_t measured, const uint32_t desired, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess)
Check if we match a mark signal(measured) with the desired within +/-tolerance percent,...
Definition: IRrecv.cpp:1315
kHitachiAcBits
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:1265
kSanyoAc88Bits
const uint16_t kSanyoAc88Bits
Definition: IRremoteESP8266.h:1364
kHitachiAc3Bits
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:1272
kRawBuf
const uint16_t kRawBuf
Definition: IRrecv.h:25
IRrecv::decode
bool decode(decode_results *results, irparams_t *save=NULL, uint8_t max_skip=0, uint16_t noise_floor=0)
Decodes the received IR message. If the interrupt state is saved, we will immediately resume waiting ...
Definition: IRrecv.cpp:554
IRrecv::decodePioneer
bool decodePioneer(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kPioneerBits, const bool strict=true)
Decode the supplied Pioneer message. Status: STABLE / Should be working. (Self decodes & real example...
Definition: ir_Pioneer.cpp:97
IRrecv::getTolerance
uint8_t getTolerance(void)
Get the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:483
kDishBits
const uint16_t kDishBits
Definition: IRremoteESP8266.h:1227
IRrecv::compare
uint16_t compare(const uint16_t oldval, const uint16_t newval)
Compare two tick values.
Definition: IRrecv.cpp:1392
decode_results::command
uint32_t command
Definition: IRrecv.h:109
kFujitsuAcBits
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:1242
decode_results::value
uint64_t value
Definition: IRrecv.h:107
kAirtonBits
const uint16_t kAirtonBits
Definition: IRremoteESP8266.h:1148
kArgoBits
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:1160
kHitachiAc2StateLength
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:1269
IRrecv::decodeSamsung36
bool decodeSamsung36(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsung36Bits, const bool strict=true)
Decode the supplied Samsung36 message. Status: STABLE / Expected to work.
Definition: ir_Samsung.cpp:207
IRrecv::decodeHitachiAc296
bool decodeHitachiAc296(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc296Bits, const bool strict=true)
Decode the supplied Hitachi 37-byte A/C message. Status: STABLE / Working on a real device.
Definition: ir_Hitachi.cpp:1976
IRrecv::pause
void pause(void)
Pause collection of received IR data.
Definition: IRrecv.cpp:411
kFooter
const uint16_t kFooter
Definition: IRrecv.h:19
kTotoBits
const uint16_t kTotoBits
Definition: IRremoteESP8266.h:1406
kNikaiBits
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:1331
kLutronBits
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:1299
IRrecv::decodeXmp
bool decodeXmp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kXmpBits, const bool strict=true)
Decode the supplied XMP packet/message. Status: STABLE / Confirmed working against a real device.
Definition: ir_Xmp.cpp:160
irparams_t::timeout
uint8_t timeout
Definition: IRrecv.h:86
IRrecv::decodeCoronaAc
bool decodeCoronaAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoronaAcBitsShort, const bool strict=true)
Decode the supplied CoronaAc message. Status: STABLE / Appears to be working.
Definition: ir_Corona.cpp:88
IRrecv::decodeLutron
bool decodeLutron(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLutronBits, const bool strict=true)
Decode the supplied Lutron message. Status: STABLE / Working.
Definition: ir_Lutron.cpp:65
IRrecv::decodeDISH
bool decodeDISH(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kDishBits, const bool strict=true)
Decode the supplied DISH NETWORK message. Status: ALPHA (untested and unconfirmed....
Definition: ir_Dish.cpp:77
kRawTick
const uint16_t kRawTick
Definition: IRrecv.h:37
IRrecv::matchManchesterData
uint16_t matchManchesterData(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t half_period, const uint16_t starting_balance=0, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
Match & decode a Manchester Code data (<= 64bits.
Definition: IRrecv.cpp:1954
IRrecv::decodeYork
bool decodeYork(decode_results *results, uint16_t kStartOffset, const uint16_t kYorkBits, const bool strict=true)
Decode the supplied message. Status: ALPHA / Tested, some values still are not mapped to the internal...
Definition: ir_York.cpp:70
IRrecv::resume
void resume(void)
Resume collection of received IR data.
Definition: IRrecv.cpp:424
kCoolix48Bits
const uint16_t kCoolix48Bits
Definition: IRremoteESP8266.h:1171
IRrecv::decodeMilestag2
bool decodeMilestag2(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMilesTag2ShotBits, const bool strict=true)
Decode the supplied MilesTag2 message. Status: ALPHA / Probably works but needs testing with a real d...
Definition: ir_MilesTag2.cpp:63
kEcoclimBits
const uint16_t kEcoclimBits
Definition: IRremoteESP8266.h:1230
kHaierACYRW02Bits
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:1256
IRrecv::matchData
match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits, const uint16_t onemark, const uint32_t onespace, const uint16_t zeromark, const uint32_t zerospace, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool expectlastspace=true)
Match & decode the typical data section of an IR message. The data value is stored in the least signi...
Definition: IRrecv.cpp:1451
kHitachiAc424Bits
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:1282
IRrecv::decodeWhirlpoolAC
bool decodeWhirlpoolAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kWhirlpoolAcBits, const bool strict=true)
Decode the supplied Whirlpool A/C message. Status: STABLE / Working as intended.
Definition: ir_Whirlpool.cpp:607
kMarkExcess
const uint16_t kMarkExcess
Definition: IRrecv.h:24
IRrecv::decodeHaierACYRW02
bool decodeHaierACYRW02(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHaierACYRW02Bits, const bool strict=true)
Decode the supplied Haier YR-W02 remote A/C message. Status: BETA / Appears to be working.
Definition: ir_Haier.cpp:1396
IRrecv::decodeLG
bool decodeLG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLgBits, const bool strict=false)
Decode the supplied LG message. Status: STABLE / Working.
Definition: ir_LG.cpp:156
IRrecv::decodeCOOLIX
bool decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)
Decode the supplied Coolix 24-bit A/C message. Status: STABLE / Known Working.
Definition: ir_Coolix.cpp:638
kLegoPfBits
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:1294
kSharpBits
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:1376
IRrecv::decodeArgoWREM3
bool decodeArgoWREM3(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArgo3AcControlStateLength *8, const bool strict=true)
Decode the supplied Argo message (WREM3). Status: Confirmed working w/ Argo 13 ECO (WREM-3)
Definition: ir_Argo.cpp:1722
IRrecv::decodeGoodweather
bool decodeGoodweather(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kGoodweatherBits, const bool strict=true)
Decode the supplied Goodweather message. Status: BETA / Probably works.
Definition: ir_Goodweather.cpp:426
IRrecv::_tolerance
uint8_t _tolerance
Definition: IRrecv.h:166
kWowweeBits
const uint16_t kWowweeBits
Definition: IRremoteESP8266.h:1420
kDefaultESP32Timer
const uint8_t kDefaultESP32Timer
Definition: IRrecv.h:59
IRrecv::matchManchester
uint16_t matchManchester(volatile const uint16_t *data_ptr, uint64_t *result_ptr, const uint16_t remaining, const uint16_t nbits, const uint16_t hdrmark, const uint32_t hdrspace, const uint16_t clock_period, const uint16_t footermark, const uint32_t footerspace, const bool atleast=false, const uint8_t tolerance=kUseDefTol, const int16_t excess=kMarkExcess, const bool MSBfirst=true, const bool GEThomas=true)
Match & decode a Manchester Code <= 64bit IR message. The data is stored at result_ptr.
Definition: IRrecv.cpp:1847
IRrecv::decodeInax
bool decodeInax(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kInaxBits, const bool strict=true)
Decode the supplied Inax Toilet message. Status: Stable / Known working.
Definition: ir_Inax.cpp:51
IRrecv::crudeNoiseFilter
void crudeNoiseFilter(decode_results *results, const uint16_t floor=0)
Remove or merge pulses in the capture buffer that are too short.
Definition: IRrecv.cpp:490
IRrecv::decodeHitachiAC1
bool decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)
IRrecv::decodeSAMSUNG
bool decodeSAMSUNG(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSamsungBits, const bool strict=true)
Decode the supplied Samsung 32-bit message. Status: STABLE.
Definition: ir_Samsung.cpp:133
IRrecv::decodeLegoPf
bool decodeLegoPf(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kLegoPfBits, const bool strict=true)
Decode the supplied LEGO Power Functions message. Status: STABLE / Appears to work.
Definition: ir_Lego.cpp:71
kRCMMBits
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:1353
kVestelAcBits
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1422
kTranscoldBits
const uint16_t kTranscoldBits
Definition: IRremoteESP8266.h:1410
kInaxBits
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:1283
IRrecv::decodeArris
bool decodeArris(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kArrisBits, const bool strict=true)
Decode the supplied Arris "Manchester code" message. Status: STABLE / Confirmed working.
Definition: ir_Arris.cpp:83
IRrecv::decodeMitsubishiHeavy
bool decodeMitsubishiHeavy(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMitsubishiHeavy152Bits, const bool strict=true)
Decode the supplied Mitsubishi Heavy Industries A/C message. Status: BETA / Appears to be working....
Definition: ir_MitsubishiHeavy.cpp:1003
IRrecv::decodeTcl96Ac
bool decodeTcl96Ac(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTcl96AcBits, const bool strict=true)
Decode the supplied Tcl96Ac message. Status: ALPHA / Experimental.
Definition: ir_Tcl.cpp:578
IRrecv::_unknown_threshold
uint16_t _unknown_threshold
Definition: IRrecv.h:171
kDaikin176Bits
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:1209
IRrecv::decodeMidea24
bool decodeMidea24(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kMidea24Bits, const bool strict=true)
Decode the supplied Midea24 message. Status: STABLE / Confirmed working on a real device.
Definition: ir_Midea.cpp:849
kDaikin312Bits
const uint16_t kDaikin312Bits
Definition: IRremoteESP8266.h:1218
IRrecv::disableIRIn
void disableIRIn(void)
Stop collection of any received IR data. Disable any timers and interrupts.
Definition: IRrecv.cpp:395
IRrecv::decodeHitachiAc424
bool decodeHitachiAc424(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc424Bits, const bool strict=true)
Decode the supplied Hitachi 53-byte/424-bit A/C message. Status: STABLE / Reported as working.
Definition: ir_Hitachi.cpp:978
IRrecv::decodeToshibaAC
bool decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kToshibaACBits, const bool strict=true)
Decode the supplied Toshiba A/C message. Status: STABLE / Working.
Definition: ir_Toshiba.cpp:505
IRrecv::ticksHigh
uint32_t ticksHigh(const uint32_t usecs, const uint8_t tolerance=kUseDefTol, const uint16_t delta=0)
Calculate the upper bound of the nr. of ticks.
Definition: IRrecv.cpp:1228
kSamsungBits
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:1354
IRrecv::_timer_num
uint8_t _timer_num
Definition: IRrecv.h:168
kDaikin64Bits
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:1197
kTeknopointBits
const uint16_t kTeknopointBits
Definition: IRremoteESP8266.h:1398
kPanasonicAc32Bits
const uint16_t kPanasonicAc32Bits
Definition: IRremoteESP8266.h:1345
IRrecv::_getParamsPtr
volatile irparams_t * _getParamsPtr(void)
Unit test helper to get access to the params structure.
Definition: IRrecv.cpp:2075
kDaikin216Bits
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:1215
kMitsubishi136Bits
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:1318
kSanyoAcBits
const uint16_t kSanyoAcBits
Definition: IRremoteESP8266.h:1362
kMitsubishi112Bits
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:1321
kEpsonBits
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:1232
decode_results::state
uint8_t state[kStateSizeMax]
Definition: IRrecv.h:111
IRrecv::decodeHash
bool decodeHash(decode_results *results)
Decode any arbitrary IR message into a 32-bit code value. Instead of decoding using a standard encodi...
Definition: IRrecv.cpp:1413
IRrecv::decodeToto
bool decodeToto(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kTotoBits, const bool strict=true)
Decode the supplied Toto Toilet message. Status: ALPHA / Untested.
Definition: ir_Toto.cpp:61
kSpaceState
const uint8_t kSpaceState
Definition: IRrecv.h:33
kLgBits
const uint16_t kLgBits
Definition: IRremoteESP8266.h:1296
IRrecv::_validTolerance
uint8_t _validTolerance(const uint8_t percentage)
Convert the tolerance percentage into something valid.
Definition: IRrecv.cpp:1206
kHeader
const uint16_t kHeader
Definition: IRrecv.h:18
kFnvBasis32
const uint32_t kFnvBasis32
Definition: IRrecv.h:53