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 // Which of the ESP32 timers to use by default. (0-3)
56 const uint8_t kDefaultESP32Timer = 3;
57 
58 #if DECODE_AC
59 // Hitachi AC is the current largest state size.
61 #else // DECODE_AC
62 // Just define something (a uint64_t)
63 const uint16_t kStateSizeMax = sizeof(uint64_t);
64 #endif // DECODE_AC
65 
66 // Types
67 
69 typedef struct {
70  uint8_t recvpin; // pin for IR data from detector
71  uint8_t rcvstate; // state machine
72  uint16_t timer; // state timer, counts 50uS ticks.
73  uint16_t bufsize; // max. nr. of entries in the capture buffer.
74  uint16_t *rawbuf; // raw data
75  // uint16_t is used for rawlen as it saves 3 bytes of iram in the interrupt
76  // handler. Don't ask why, I don't know. It just does.
77  uint16_t rawlen; // counter of entries in rawbuf.
78  uint8_t overflow; // Buffer overflow indicator.
79  uint8_t timeout; // Nr. of milliSeconds before we give up.
80 } irparams_t;
81 
83 typedef struct {
84  bool success; // Was the match successful?
85  uint64_t data; // The data found.
86  uint16_t used; // How many buffer positions were used.
88 
89 // Classes
90 
93  public:
94  decode_type_t decode_type; // NEC, SONY, RC5, UNKNOWN
95  // value, address, & command are all mutually exclusive with state.
96  // i.e. They MUST NOT be used at the same time as state, so we can use a union
97  // structure to save us a handful of valuable bytes of memory.
98  union {
99  struct {
100  uint64_t value; // Decoded value
101  uint32_t address; // Decoded device address.
102  uint32_t command; // Decoded command.
103  };
104  uint8_t state[kStateSizeMax]; // Multi-byte results.
105  };
106  uint16_t bits; // Number of bits in decoded value
107  volatile uint16_t *rawbuf; // Raw intervals in .5 us ticks
108  uint16_t rawlen; // Number of records in rawbuf.
109  bool overflow;
110  bool repeat; // Is the result a repeat code?
111 };
112 
114 class IRrecv {
115  public:
116 #if defined(ESP32)
117  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
118  const uint8_t timeout = kTimeoutMs,
119  const bool save_buffer = false,
120  const uint8_t timer_num = kDefaultESP32Timer); // Constructor
121 #else // ESP32
122  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
123  const uint8_t timeout = kTimeoutMs,
124  const bool save_buffer = false); // Constructor
125 #endif // ESP32
126  ~IRrecv(void); // Destructor
127  void setTolerance(const uint8_t percent = kTolerance);
128  uint8_t getTolerance(void);
129  bool decode(decode_results *results, irparams_t *save = NULL,
130  uint8_t max_skip = 0, uint16_t noise_floor = 0);
131  void enableIRIn(const bool pullup = false);
132  void disableIRIn(void);
133  void resume(void);
134  uint16_t getBufSize(void);
135 #if DECODE_HASH
136  void setUnknownThreshold(const uint16_t length);
137 #endif
138  bool match(const uint32_t measured, const uint32_t desired,
139  const uint8_t tolerance = kUseDefTol,
140  const uint16_t delta = 0);
141  bool matchMark(const uint32_t measured, const uint32_t desired,
142  const uint8_t tolerance = kUseDefTol,
143  const int16_t excess = kMarkExcess);
144  bool matchMarkRange(const uint32_t measured, const uint32_t desired,
145  const uint16_t range = 100,
146  const int16_t excess = kMarkExcess);
147  bool matchSpace(const uint32_t measured, const uint32_t desired,
148  const uint8_t tolerance = kUseDefTol,
149  const int16_t excess = kMarkExcess);
150  bool matchSpaceRange(const uint32_t measured, const uint32_t desired,
151  const uint16_t range = 100,
152  const int16_t excess = kMarkExcess);
153 #ifndef UNIT_TEST
154 
155  private:
156 #endif
158  uint8_t _tolerance;
159 #if defined(ESP32)
160  uint8_t _timer_num;
161 #endif // defined(ESP32)
162 #if DECODE_HASH
164 #endif
165 #ifdef UNIT_TEST
166  volatile irparams_t *_getParamsPtr(void);
167 #endif // UNIT_TEST
168  // These are called by decode
169  uint8_t _validTolerance(const uint8_t percentage);
170  void copyIrParams(volatile irparams_t *src, irparams_t *dst);
171  uint16_t compare(const uint16_t oldval, const uint16_t newval);
172  uint32_t ticksLow(const uint32_t usecs,
173  const uint8_t tolerance = kUseDefTol,
174  const uint16_t delta = 0);
175  uint32_t ticksHigh(const uint32_t usecs,
176  const uint8_t tolerance = kUseDefTol,
177  const uint16_t delta = 0);
178  bool matchAtLeast(const uint32_t measured, const uint32_t desired,
179  const uint8_t tolerance = kUseDefTol,
180  const uint16_t delta = 0);
181  uint16_t _matchGeneric(volatile uint16_t *data_ptr,
182  uint64_t *result_bits_ptr,
183  uint8_t *result_ptr,
184  const bool use_bits,
185  const uint16_t remaining,
186  const uint16_t required,
187  const uint16_t hdrmark,
188  const uint32_t hdrspace,
189  const uint16_t onemark,
190  const uint32_t onespace,
191  const uint16_t zeromark,
192  const uint32_t zerospace,
193  const uint16_t footermark,
194  const uint32_t footerspace,
195  const bool atleast = false,
196  const uint8_t tolerance = kUseDefTol,
197  const int16_t excess = kMarkExcess,
198  const bool MSBfirst = true);
199  match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits,
200  const uint16_t onemark, const uint32_t onespace,
201  const uint16_t zeromark, const uint32_t zerospace,
202  const uint8_t tolerance = kUseDefTol,
203  const int16_t excess = kMarkExcess,
204  const bool MSBfirst = true,
205  const bool expectlastspace = true);
206  uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr,
207  const uint16_t remaining, const uint16_t nbytes,
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 matchGeneric(volatile uint16_t *data_ptr,
215  uint64_t *result_ptr,
216  const uint16_t remaining, const uint16_t nbits,
217  const uint16_t hdrmark, const uint32_t hdrspace,
218  const uint16_t onemark, const uint32_t onespace,
219  const uint16_t zeromark, const uint32_t zerospace,
220  const uint16_t footermark, const uint32_t footerspace,
221  const bool atleast = false,
222  const uint8_t tolerance = kUseDefTol,
223  const int16_t excess = kMarkExcess,
224  const bool MSBfirst = true);
225  uint16_t matchGeneric(volatile uint16_t *data_ptr, uint8_t *result_ptr,
226  const uint16_t remaining, const uint16_t nbits,
227  const uint16_t hdrmark, const uint32_t hdrspace,
228  const uint16_t onemark, const uint32_t onespace,
229  const uint16_t zeromark, const uint32_t zerospace,
230  const uint16_t footermark,
231  const uint32_t footerspace,
232  const bool atleast = false,
233  const uint8_t tolerance = kUseDefTol,
234  const int16_t excess = kMarkExcess,
235  const bool MSBfirst = true);
236  uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr,
237  uint64_t *result_ptr,
238  const uint16_t remaining,
239  const uint16_t nbits,
240  const uint16_t hdrmark,
241  const uint32_t hdrspace,
242  const uint16_t one,
243  const uint32_t zero,
244  const uint16_t footermark,
245  const uint32_t footerspace,
246  const bool atleast = false,
247  const uint8_t tolerance = kUseDefTol,
248  const int16_t excess = kMarkExcess,
249  const bool MSBfirst = true);
250  uint16_t matchManchesterData(volatile const uint16_t *data_ptr,
251  uint64_t *result_ptr,
252  const uint16_t remaining,
253  const uint16_t nbits,
254  const uint16_t half_period,
255  const uint16_t starting_balance = 0,
256  const uint8_t tolerance = kUseDefTol,
257  const int16_t excess = kMarkExcess,
258  const bool MSBfirst = true,
259  const bool GEThomas = true);
260  uint16_t matchManchester(volatile const uint16_t *data_ptr,
261  uint64_t *result_ptr,
262  const uint16_t remaining,
263  const uint16_t nbits,
264  const uint16_t hdrmark,
265  const uint32_t hdrspace,
266  const uint16_t clock_period,
267  const uint16_t footermark,
268  const uint32_t footerspace,
269  const bool atleast = false,
270  const uint8_t tolerance = kUseDefTol,
271  const int16_t excess = kMarkExcess,
272  const bool MSBfirst = true,
273  const bool GEThomas = true);
274  void crudeNoiseFilter(decode_results *results, const uint16_t floor = 0);
275  bool decodeHash(decode_results *results);
276 #if DECODE_VOLTAS
277  bool decodeVoltas(decode_results *results,
278  uint16_t offset = kStartOffset,
279  const uint16_t nbits = kVoltasBits,
280  const bool strict = true);
281 #endif // DECODE_VOLTAS
282 #if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO)
283  bool decodeNEC(decode_results *results, uint16_t offset = kStartOffset,
284  const uint16_t nbits = kNECBits, const bool strict = true);
285 #endif
286 #if DECODE_ARGO
287  bool decodeArgo(decode_results *results, uint16_t offset = kStartOffset,
288  const uint16_t nbits = kArgoBits, const bool strict = true);
289 #endif // DECODE_ARGO
290 #if DECODE_SONY
291  bool decodeSony(decode_results *results, uint16_t offset = kStartOffset,
292  const uint16_t nbits = kSonyMinBits,
293  const bool strict = false);
294 #endif
295 #if DECODE_SANYO
296  // DISABLED due to poor quality.
297  // bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,
298  // uint16_t nbits = kSanyoSA8650BBits,
299  // bool strict = false);
300  bool decodeSanyoLC7461(decode_results *results,
301  uint16_t offset = kStartOffset,
302  const uint16_t nbits = kSanyoLC7461Bits,
303  const bool strict = true);
304 #endif
305 #if DECODE_SANYO_AC
306  bool decodeSanyoAc(decode_results *results,
307  uint16_t offset = kStartOffset,
308  const uint16_t nbits = kSanyoAcBits,
309  const bool strict = true);
310 #endif // DECODE_SANYO_AC
311 #if DECODE_SANYO_AC88
312  bool decodeSanyoAc88(decode_results *results,
313  uint16_t offset = kStartOffset,
314  const uint16_t nbits = kSanyoAc88Bits,
315  const bool strict = true);
316 #endif // DECODE_SANYO_AC88
317 #if DECODE_MITSUBISHI
318  bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset,
319  const uint16_t nbits = kMitsubishiBits,
320  const bool strict = true);
321 #endif
322 #if DECODE_MITSUBISHI2
323  bool decodeMitsubishi2(decode_results *results,
324  uint16_t offset = kStartOffset,
325  const uint16_t nbits = kMitsubishiBits,
326  const bool strict = true);
327 #endif
328 #if DECODE_MITSUBISHI_AC
329  bool decodeMitsubishiAC(decode_results *results,
330  uint16_t offset = kStartOffset,
331  const uint16_t nbits = kMitsubishiACBits,
332  const bool strict = false);
333 #endif
334 #if DECODE_MITSUBISHI136
335  bool decodeMitsubishi136(decode_results *results,
336  uint16_t offset = kStartOffset,
337  const uint16_t nbits = kMitsubishi136Bits,
338  const bool strict = true);
339 #endif
340 #if DECODE_MITSUBISHI112
341  bool decodeMitsubishi112(decode_results *results,
342  uint16_t offset = kStartOffset,
343  const uint16_t nbits = kMitsubishi112Bits,
344  const bool strict = true);
345 #endif
346 #if DECODE_MITSUBISHIHEAVY
348  uint16_t offset = kStartOffset,
349  const uint16_t nbits = kMitsubishiHeavy152Bits,
350  const bool strict = true);
351 #endif
352 #if (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG || DECODE_MWM)
353  int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used,
354  uint16_t bitTime, const uint8_t tolerance = kUseDefTol,
355  const int16_t excess = kMarkExcess,
356  const uint16_t delta = 0, const uint8_t maxwidth = 3);
357 #endif
358 #if DECODE_RC5
359  bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset,
360  const uint16_t nbits = kRC5XBits,
361  const bool strict = true);
362 #endif
363 #if DECODE_RC6
364  bool decodeRC6(decode_results *results, uint16_t offset = kStartOffset,
365  const uint16_t nbits = kRC6Mode0Bits,
366  const bool strict = false);
367 #endif
368 #if DECODE_RCMM
369  bool decodeRCMM(decode_results *results, uint16_t offset = kStartOffset,
370  const uint16_t nbits = kRCMMBits,
371  const bool strict = false);
372 #endif
373 #if (DECODE_PANASONIC || DECODE_DENON)
374  bool decodePanasonic(decode_results *results, uint16_t offset = kStartOffset,
375  const uint16_t nbits = kPanasonicBits,
376  const bool strict = false,
377  const uint32_t manufacturer = kPanasonicManufacturer);
378 #endif
379 #if DECODE_LG
380  bool decodeLG(decode_results *results, uint16_t offset = kStartOffset,
381  const uint16_t nbits = kLgBits,
382  const bool strict = false);
383 #endif
384 #if DECODE_INAX
385  bool decodeInax(decode_results *results, uint16_t offset = kStartOffset,
386  const uint16_t nbits = kInaxBits,
387  const bool strict = true);
388 #endif // DECODE_INAX
389 #if DECODE_JVC
390  bool decodeJVC(decode_results *results, uint16_t offset = kStartOffset,
391  const uint16_t nbits = kJvcBits,
392  const bool strict = true);
393 #endif
394 #if DECODE_SAMSUNG
395  bool decodeSAMSUNG(decode_results *results, uint16_t offset = kStartOffset,
396  const uint16_t nbits = kSamsungBits,
397  const bool strict = true);
398 #endif
399 #if DECODE_SAMSUNG
400  bool decodeSamsung36(decode_results *results, uint16_t offset = kStartOffset,
401  const uint16_t nbits = kSamsung36Bits,
402  const bool strict = true);
403 #endif
404 #if DECODE_SAMSUNG_AC
405  bool decodeSamsungAC(decode_results *results, uint16_t offset = kStartOffset,
406  const uint16_t nbits = kSamsungAcBits,
407  const bool strict = true);
408 #endif
409 #if DECODE_WHYNTER
410  bool decodeWhynter(decode_results *results, uint16_t offset = kStartOffset,
411  const uint16_t nbits = kWhynterBits,
412  const bool strict = true);
413 #endif
414 #if DECODE_COOLIX
415  bool decodeCOOLIX(decode_results *results, uint16_t offset = kStartOffset,
416  const uint16_t nbits = kCoolixBits,
417  const bool strict = true);
418 #endif
419 #if DECODE_DENON
420  bool decodeDenon(decode_results *results, uint16_t offset = kStartOffset,
421  const uint16_t nbits = kDenonBits,
422  const bool strict = true);
423 #endif
424 #if DECODE_DISH
425  bool decodeDISH(decode_results *results, uint16_t offset = kStartOffset,
426  const uint16_t nbits = kDishBits,
427  const bool strict = true);
428 #endif
429 #if (DECODE_SHARP || DECODE_DENON)
430  bool decodeSharp(decode_results *results, uint16_t offset = kStartOffset,
431  const uint16_t nbits = kSharpBits,
432  const bool strict = true, const bool expansion = true);
433 #endif
434 #if DECODE_SHARP_AC
435  bool decodeSharpAc(decode_results *results, uint16_t offset = kStartOffset,
436  const uint16_t nbits = kSharpAcBits,
437  const bool strict = true);
438 #endif
439 #if DECODE_AIWA_RC_T501
440  bool decodeAiwaRCT501(decode_results *results, uint16_t offset = kStartOffset,
441  const uint16_t nbits = kAiwaRcT501Bits,
442  const bool strict = true);
443 #endif
444 #if DECODE_NIKAI
445  bool decodeNikai(decode_results *results, uint16_t offset = kStartOffset,
446  const uint16_t nbits = kNikaiBits,
447  const bool strict = true);
448 #endif
449 #if DECODE_MAGIQUEST
450  bool decodeMagiQuest(decode_results *results, uint16_t offset = kStartOffset,
451  const uint16_t nbits = kMagiquestBits,
452  const bool strict = true);
453 #endif
454 #if DECODE_KELVINATOR
455  bool decodeKelvinator(decode_results *results, uint16_t offset = kStartOffset,
456  const uint16_t nbits = kKelvinatorBits,
457  const bool strict = true);
458 #endif
459 #if DECODE_DAIKIN
460  bool decodeDaikin(decode_results *results, uint16_t offset = kStartOffset,
461  const uint16_t nbits = kDaikinBits,
462  const bool strict = true);
463 #endif
464 #if DECODE_DAIKIN64
465  bool decodeDaikin64(decode_results *results, uint16_t offset = kStartOffset,
466  const uint16_t nbits = kDaikin64Bits,
467  const bool strict = true);
468 #endif // DECODE_DAIKIN64
469 #if DECODE_DAIKIN128
470  bool decodeDaikin128(decode_results *results, uint16_t offset = kStartOffset,
471  const uint16_t nbits = kDaikin128Bits,
472  const bool strict = true);
473 #endif // DECODE_DAIKIN128
474 #if DECODE_DAIKIN152
475  bool decodeDaikin152(decode_results *results, uint16_t offset = kStartOffset,
476  const uint16_t nbits = kDaikin152Bits,
477  const bool strict = true);
478 #endif // DECODE_DAIKIN152
479 #if DECODE_DAIKIN160
480  bool decodeDaikin160(decode_results *results, uint16_t offset = kStartOffset,
481  const uint16_t nbits = kDaikin160Bits,
482  const bool strict = true);
483 #endif // DECODE_DAIKIN160
484 #if DECODE_DAIKIN176
485  bool decodeDaikin176(decode_results *results, uint16_t offset = kStartOffset,
486  const uint16_t nbits = kDaikin176Bits,
487  const bool strict = true);
488 #endif // DECODE_DAIKIN176
489 #if DECODE_DAIKIN2
490  bool decodeDaikin2(decode_results *results, uint16_t offset = kStartOffset,
491  const uint16_t nbits = kDaikin2Bits,
492  const bool strict = true);
493 #endif
494 #if DECODE_DAIKIN216
495  bool decodeDaikin216(decode_results *results, uint16_t offset = kStartOffset,
496  const uint16_t nbits = kDaikin216Bits,
497  const bool strict = true);
498 #endif
499 #if DECODE_TOSHIBA_AC
500  bool decodeToshibaAC(decode_results *results, uint16_t offset = kStartOffset,
501  const uint16_t nbits = kToshibaACBits,
502  const bool strict = true);
503 #endif
504 #if DECODE_TROTEC
505  bool decodeTrotec(decode_results *results, uint16_t offset = kStartOffset,
506  const uint16_t nbits = kTrotecBits,
507  const bool strict = true);
508 #endif // DECODE_TROTEC
509 #if DECODE_TROTEC_3550
510  bool decodeTrotec3550(decode_results *results, uint16_t offset = kStartOffset,
511  const uint16_t nbits = kTrotecBits,
512  const bool strict = true);
513 #endif // DECODE_TROTEC_3550
514 #if DECODE_MIDEA
515  bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset,
516  const uint16_t nbits = kMideaBits,
517  const bool strict = true);
518 #endif // DECODE_MIDEA
519 #if DECODE_MIDEA24
520  bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset,
521  const uint16_t nbits = kMidea24Bits,
522  const bool strict = true);
523 #endif // DECODE_MIDEA24
524 #if DECODE_FUJITSU_AC
525  bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset,
526  const uint16_t nbits = kFujitsuAcBits,
527  const bool strict = false);
528 #endif
529 #if DECODE_LASERTAG
530  bool decodeLasertag(decode_results *results, uint16_t offset = kStartOffset,
531  const uint16_t nbits = kLasertagBits,
532  const bool strict = true);
533 #endif
534 #if DECODE_MILESTAG2
535  bool decodeMilestag2(decode_results *results, uint16_t offset = kStartOffset,
536  const uint16_t nbits = kMilesTag2ShotBits,
537  const bool strict = true);
538 #endif
539 #if DECODE_CARRIER_AC
540  bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
541  const uint16_t nbits = kCarrierAcBits,
542  const bool strict = true);
543 #endif // DECODE_CARRIER_AC
544 #if DECODE_CARRIER_AC40
545  bool decodeCarrierAC40(decode_results *results,
546  uint16_t offset = kStartOffset,
547  const uint16_t nbits = kCarrierAc40Bits,
548  const bool strict = true);
549 #endif // DECODE_CARRIER_AC40
550 #if DECODE_CARRIER_AC64
551  bool decodeCarrierAC64(decode_results *results,
552  uint16_t offset = kStartOffset,
553  const uint16_t nbits = kCarrierAc64Bits,
554  const bool strict = true);
555 #endif // DECODE_CARRIER_AC64
556 #if DECODE_GOODWEATHER
557  bool decodeGoodweather(decode_results *results,
558  uint16_t offset = kStartOffset,
559  const uint16_t nbits = kGoodweatherBits,
560  const bool strict = true);
561 #endif // DECODE_GOODWEATHER
562 #if DECODE_GREE
563  bool decodeGree(decode_results *results, uint16_t offset = kStartOffset,
564  const uint16_t nbits = kGreeBits,
565  const bool strict = true);
566 #endif
567 #if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02)
568  bool decodeHaierAC(decode_results *results, uint16_t offset = kStartOffset,
569  const uint16_t nbits = kHaierACBits,
570  const bool strict = true);
571 #endif
572 #if DECODE_HAIER_AC_YRW02
573  bool decodeHaierACYRW02(decode_results *results,
574  uint16_t offset = kStartOffset,
575  const uint16_t nbits = kHaierACYRW02Bits,
576  const bool strict = true);
577 #endif
578 #if DECODE_HAIER_AC176
579  bool decodeHaierAC176(decode_results *results,
580  uint16_t offset = kStartOffset,
581  const uint16_t nbits = kHaierAC176Bits,
582  const bool strict = true);
583 #endif // DECODE_HAIER_AC176
584 #if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC344)
585  bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset,
586  const uint16_t nbits = kHitachiAcBits,
587  const bool strict = true, const bool MSBfirst = true);
588 #endif
589 #if DECODE_HITACHI_AC1
590  bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset,
591  const uint16_t nbits = kHitachiAc1Bits,
592  const bool strict = true);
593 #endif
594 #if DECODE_HITACHI_AC3
595  bool decodeHitachiAc3(decode_results *results,
596  uint16_t offset = kStartOffset,
597  const uint16_t nbits = kHitachiAc3Bits,
598  const bool strict = true);
599 #endif // DECODE_HITACHI_AC3
600 #if DECODE_HITACHI_AC424
601  bool decodeHitachiAc424(decode_results *results,
602  uint16_t offset = kStartOffset,
603  const uint16_t nbits = kHitachiAc424Bits,
604  const bool strict = true);
605 #endif // DECODE_HITACHI_AC424
606 #if DECODE_GICABLE
607  bool decodeGICable(decode_results *results, uint16_t offset = kStartOffset,
608  const uint16_t nbits = kGicableBits,
609  const bool strict = true);
610 #endif
611 #if DECODE_WHIRLPOOL_AC
612  bool decodeWhirlpoolAC(decode_results *results,
613  uint16_t offset = kStartOffset,
614  const uint16_t nbits = kWhirlpoolAcBits,
615  const bool strict = true);
616 #endif
617 #if DECODE_LUTRON
618  bool decodeLutron(decode_results *results, uint16_t offset = kStartOffset,
619  const uint16_t nbits = kLutronBits,
620  const bool strict = true);
621 #endif
622 #if DECODE_ELECTRA_AC
623  bool decodeElectraAC(decode_results *results, uint16_t offset = kStartOffset,
624  const uint16_t nbits = kElectraAcBits,
625  const bool strict = true);
626 #endif
627 #if DECODE_PANASONIC_AC
628  bool decodePanasonicAC(decode_results *results,
629  uint16_t offset = kStartOffset,
630  const uint16_t nbits = kPanasonicAcBits,
631  const bool strict = true);
632 #endif // DECODE_PANASONIC_AC
633 #if DECODE_PANASONIC_AC32
634  bool decodePanasonicAC32(decode_results *results,
635  uint16_t offset = kStartOffset,
636  const uint16_t nbits = kPanasonicAc32Bits,
637  const bool strict = true);
638 #endif // DECODE_PANASONIC_AC32
639 #if DECODE_PIONEER
640  bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
641  const uint16_t nbits = kPioneerBits,
642  const bool strict = true);
643 #endif
644 #if DECODE_MWM
645  bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
646  const uint16_t nbits = 24,
647  const bool strict = true);
648 #endif
649 #if DECODE_VESTEL_AC
650  bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
651  const uint16_t nbits = kVestelAcBits,
652  const bool strict = true);
653 #endif
654 #if DECODE_TECO
655  bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
656  const uint16_t nbits = kTecoBits,
657  const bool strict = false);
658 #endif
659 #if DECODE_LEGOPF
660  bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
661  const uint16_t nbits = kLegoPfBits,
662  const bool strict = true);
663 #endif
664 #if DECODE_NEOCLIMA
665  bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
666  const uint16_t nbits = kNeoclimaBits,
667  const bool strict = true);
668 #endif // DECODE_NEOCLIMA
669 #if DECODE_AMCOR
670  bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
671  const uint16_t nbits = kAmcorBits,
672  const bool strict = true);
673 #endif // DECODE_AMCOR
674 #if DECODE_EPSON
675  bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
676  const uint16_t nbits = kEpsonBits,
677  const bool strict = true);
678 #endif // DECODE_EPSON
679 #if DECODE_SYMPHONY
680  bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
681  const uint16_t nbits = kSymphonyBits,
682  const bool strict = true);
683 #endif // DECODE_SYMPHONY
684 #if DECODE_AIRWELL
685  bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
686  const uint16_t nbits = kAirwellBits,
687  const bool strict = true);
688 #endif // DECODE_AIRWELL
689 #if DECODE_DELONGHI_AC
690  bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
691  const uint16_t nbits = kDelonghiAcBits,
692  const bool strict = true);
693 #endif // DECODE_DELONGHI_AC
694 #if DECODE_DOSHISHA
695  bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
696  const uint16_t nbits = kDoshishaBits,
697  const bool strict = true);
698 #endif // DECODE_DOSHISHA
699 #if DECODE_MULTIBRACKETS
700  bool decodeMultibrackets(decode_results *results,
701  uint16_t offset = kStartOffset,
702  const uint16_t nbits = kMultibracketsBits,
703  const bool strict = true);
704 #endif // DECODE_MULTIBRACKETS
705 #if DECODE_TECHNIBEL_AC
706  bool decodeTechnibelAc(decode_results *results,
707  uint16_t offset = kStartOffset,
708  const uint16_t nbits = kTechnibelAcBits,
709  const bool strict = true);
710 #endif // DECODE_TECHNIBEL_AC
711 #if DECODE_CORONA_AC
712  bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
713  const uint16_t nbits = kCoronaAcBitsShort,
714  const bool strict = true);
715 #endif // DECODE_CORONA_AC
716 #if DECODE_ZEPEAL
717  bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
718  const uint16_t nbits = kZepealBits,
719  const bool strict = true);
720 #endif // DECODE_ZEPEAL
721 #if DECODE_METZ
722  bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
723  const uint16_t nbits = kMetzBits,
724  const bool strict = true);
725 #endif // DECODE_METZ
726 #if DECODE_TRANSCOLD
727  bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
728  const uint16_t nbits = kTranscoldBits,
729  const bool strict = true);
730 #endif // DECODE_TRANSCOLD
731 #if DECODE_MIRAGE
732  bool decodeMirage(decode_results *results,
733  uint16_t offset = kStartOffset,
734  const uint16_t nbits = kMirageBits,
735  const bool strict = true);
736 #endif // DECODE_MIRAGE
737 #if DECODE_ELITESCREENS
738  bool decodeElitescreens(decode_results *results,
739  uint16_t offset = kStartOffset,
740  const uint16_t nbits = kEliteScreensBits,
741  const bool strict = true);
742 #endif // DECODE_ELITESCREENS
743 #if DECODE_ECOCLIM
744  bool decodeEcoclim(decode_results *results, uint16_t offset = kStartOffset,
745  const uint16_t nbits = kEcoclimBits,
746  const bool strict = true);
747 #endif // DECODE_ECOCLIM
748 #if DECODE_XMP
749  bool decodeXmp(decode_results *results, uint16_t offset = kStartOffset,
750  const uint16_t nbits = kXmpBits, const bool strict = true);
751 #endif // DECODE_XMP
752 #if DECODE_TRUMA
753  bool decodeTruma(decode_results *results, uint16_t offset = kStartOffset,
754  const uint16_t nbits = kTrumaBits, const bool strict = true);
755 #endif // DECODE_TRUMA
756 #if DECODE_TEKNOPOINT
757  bool decodeTeknopoint(decode_results *results, uint16_t offset = kStartOffset,
758  const uint16_t nbits = kTeknopointBits,
759  const bool strict = true);
760 #endif // DECODE_TEKNOPOINT
761 #if DECODE_KELON
762  bool decodeKelon(decode_results *results, uint16_t offset = kStartOffset,
763  const uint16_t nbits = kKelonBits, const bool strict = true);
764 #endif // DECODE_KELON
765 #if DECODE_BOSE
766  bool decodeBose(decode_results *results, uint16_t offset = kStartOffset,
767  const uint16_t nbits = kBoseBits, const bool strict = true);
768 #endif // DECODE_BOSE
769 };
770 
771 #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:1362
kDelonghiAcBits
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:1010
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
kMirageBits
const uint16_t kMirageBits
Definition: IRremoteESP8266.h:1088
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:1148
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:109
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:2921
kGicableBits
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:1034
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:1516
decode_type_t
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:845
kCarrierAcBits
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:975
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:447
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
kMultibracketsBits
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:1109
kSharpAcBits
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:1153
kWhynterBits
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1187
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:283
irparams_t::overflow
uint8_t overflow
Definition: IRrecv.h:78
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:660
kAirwellBits
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:962
IRrecv::irparams_save
irparams_t * irparams_save
Definition: IRrecv.h:157
kMitsubishiACBits
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:1095
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:946
IRrecv::decodeSanyoAc88
bool decodeSanyoAc88(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSanyoAc88Bits, const bool strict=true)
Decode the supplied SanyoAc message. Status: ALPHA / Untested.
Definition: ir_Sanyo.cpp:700
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:1185
kTechnibelAcBits
const uint16_t kTechnibelAcBits
Definition: IRremoteESP8266.h:1012
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
kVoltasBits
const uint16_t kVoltasBits
Definition: IRremoteESP8266.h:1192
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:1187
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:788
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:1128
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:77
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:114
irparams_t::bufsize
uint16_t bufsize
Definition: IRrecv.h:73
decode_results
Results returned from the decoder.
Definition: IRrecv.h:92
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:1610
kBoseBits
const uint16_t kBoseBits
Definition: IRremoteESP8266.h:1197
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:195
kCoolixBits
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:973
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. Status: BETA / Probably works.
Definition: ir_Argo.cpp:445
kCoronaAcBitsShort
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:983
match_result_t::data
uint64_t data
Definition: IRrecv.h:85
kSamsung36Bits
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:1133
kMagiquestBits
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:1080
irparams_t::rawbuf
uint16_t * rawbuf
Definition: IRrecv.h:74
irparams_t
Information for the interrupt handler.
Definition: IRrecv.h:69
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:416
kSanyoLC7461Bits
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:1147
decode_results::repeat
bool repeat
Definition: IRrecv.h:110
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:846
kTrotecBits
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1181
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:598
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:49
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:1227
kEliteScreensBits
const uint16_t kEliteScreensBits
Definition: IRremoteESP8266.h:1027
irparams_t::recvpin
uint8_t recvpin
Definition: IRrecv.h:70
irparams_t::timer
uint16_t timer
Definition: IRrecv.h:72
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:3371
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:84
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:1332
kElectraAcBits
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:1025
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:1204
kSonyMinBits
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:1160
kHaierAC176Bits
const uint16_t kHaierAC176Bits
Definition: IRremoteESP8266.h:1048
kStopState
const uint8_t kStopState
Definition: IRrecv.h:34
decode_results::rawlen
uint16_t rawlen
Definition: IRrecv.h:108
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:982
kDaikin2Bits
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:991
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:1054
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:370
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:1679
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:3010
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:1116
kMilesTag2ShotBits
const uint16_t kMilesTag2ShotBits
Definition: IRremoteESP8266.h:1194
decode_results::decode_type
decode_type_t decode_type
Definition: IRrecv.h:94
kPanasonicAcBits
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:1120
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:429
kXmpBits
const uint16_t kXmpBits
Definition: IRremoteESP8266.h:1189
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:666
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
kDaikin160Bits
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:996
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:392
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:459
kGoodweatherBits
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:1036
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:323
kDaikin152Bits
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:1002
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:1224
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:853
kKelonBits
const uint16_t kKelonBits
Definition: IRremoteESP8266.h:1068
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:2034
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:1414
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:421
kSymphonyBits
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:1162
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:50
kRC6Mode0Bits
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:1129
kStateSizeMax
const uint16_t kStateSizeMax
Definition: IRrecv.h:60
match_result_t
Results from a data match.
Definition: IRrecv.h:83
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:71
kMetzBits
const uint16_t kMetzBits
Definition: IRremoteESP8266.h:1081
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:308
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:1425
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::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:82
kMitsubishiHeavy152Bits
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:1107
kDoshishaBits
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:1019
kCarrierAc40Bits
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:977
kStartOffset
const uint16_t kStartOffset
Definition: IRrecv.h:20
kAmcorBits
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:968
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:247
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:813
decode_results::rawbuf
volatile uint16_t * rawbuf
Definition: IRrecv.h:107
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:155
match_result_t::used
uint16_t used
Definition: IRrecv.h:86
kPanasonicManufacturer
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:1117
decode_results::address
uint32_t address
Definition: IRrecv.h:101
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:1090
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:1092
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:60
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:1135
kUnknownThreshold
const uint16_t kUnknownThreshold
Definition: IRrecv.h:28
kMideaBits
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:1083
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:1070
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
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:146
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:147
kNECBits
const uint16_t kNECBits
Definition: IRremoteESP8266.h:1112
kDenonBits
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:1014
kHaierACBits
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:1042
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:1123
kZepealBits
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1190
kMidea24Bits
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:1085
IRrecv::decodeKelon
bool decodeKelon(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelonBits, const bool strict=true)
Decode the supplied Kelon message. Status: STABLE / Working.
Definition: ir_Kelon.cpp:71
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:2426
kNeoclimaBits
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:1114
kWhirlpoolAcBits
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1185
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:855
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
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:979
kPioneerBits
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:1124
decode_results::bits
uint16_t bits
Definition: IRrecv.h:106
kGreeBits
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:1039
kJvcBits
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:1067
kLasertagBits
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:1072
kDaikin128Bits
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:999
kAiwaRcT501Bits
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:964
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:1066
kTrumaBits
const uint16_t kTrumaBits
Definition: IRremoteESP8266.h:1183
kTecoBits
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:1167
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:45
kToshibaACBits
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1172
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:121
kDaikinBits
const uint16_t kDaikinBits
Definition: IRremoteESP8266.h:986
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:1165
kHitachiAcBits
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:1051
kSanyoAc88Bits
const uint16_t kSanyoAc88Bits
Definition: IRremoteESP8266.h:1142
kHitachiAc3Bits
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:1058
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:506
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:92
IRrecv::getTolerance
uint8_t getTolerance(void)
Get the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:435
kDishBits
const uint16_t kDishBits
Definition: IRremoteESP8266.h:1017
IRrecv::compare
uint16_t compare(const uint16_t oldval, const uint16_t newval)
Compare two tick values.
Definition: IRrecv.cpp:1242
decode_results::command
uint32_t command
Definition: IRrecv.h:102
kFujitsuAcBits
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:1032
decode_results::value
uint64_t value
Definition: IRrecv.h:100
kArgoBits
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:971
kHitachiAc2StateLength
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:1055
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:193
kFooter
const uint16_t kFooter
Definition: IRrecv.h:19
kNikaiBits
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:1111
kLutronBits
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:1079
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: BETA / Probably works.
Definition: ir_Xmp.cpp:160
irparams_t::timeout
uint8_t timeout
Definition: IRrecv.h:79
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:1804
IRrecv::resume
void resume(void)
Resume collection of received IR data.
Definition: IRrecv.cpp:377
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:1020
kHaierACYRW02Bits
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:1045
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:1301
kHitachiAc424Bits
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:1064
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:1194
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:155
IRrecv::decodeCOOLIX
bool decodeCOOLIX(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kCoolixBits, const bool strict=true)
Decode the supplied Coolix A/C message. Status: STABLE / Known Working.
Definition: ir_Coolix.cpp:628
kLegoPfBits
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:1074
kSharpBits
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:1151
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:424
IRrecv::_tolerance
uint8_t _tolerance
Definition: IRrecv.h:158
kDefaultESP32Timer
const uint8_t kDefaultESP32Timer
Definition: IRrecv.h:56
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:1697
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:442
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:119
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:1131
kVestelAcBits
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1188
kTranscoldBits
const uint16_t kTranscoldBits
Definition: IRremoteESP8266.h:1178
kInaxBits
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:1065
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::_unknown_threshold
uint16_t _unknown_threshold
Definition: IRrecv.h:163
kDaikin176Bits
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:1005
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:759
IRrecv::disableIRIn
void disableIRIn(void)
Stop collection of any received IR data. Disable any timers and interrupts.
Definition: IRrecv.cpp:360
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:959
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:493
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:1079
kSamsungBits
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:1132
IRrecv::_timer_num
uint8_t _timer_num
Definition: IRrecv.h:160
kDaikin64Bits
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:993
kTeknopointBits
const uint16_t kTeknopointBits
Definition: IRremoteESP8266.h:1170
kPanasonicAc32Bits
const uint16_t kPanasonicAc32Bits
Definition: IRremoteESP8266.h:1123
IRrecv::_getParamsPtr
volatile irparams_t * _getParamsPtr(void)
Unit test helper to get access to the params structure.
Definition: IRrecv.cpp:1902
kDaikin216Bits
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:1008
kMitsubishi136Bits
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:1098
kSanyoAcBits
const uint16_t kSanyoAcBits
Definition: IRremoteESP8266.h:1140
kMitsubishi112Bits
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:1101
kEpsonBits
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:1022
decode_results::state
uint8_t state[kStateSizeMax]
Definition: IRrecv.h:104
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:1263
kSpaceState
const uint8_t kSpaceState
Definition: IRrecv.h:33
kLgBits
const uint16_t kLgBits
Definition: IRremoteESP8266.h:1076
IRrecv::_validTolerance
uint8_t _validTolerance(const uint8_t percentage)
Convert the tolerance percentage into something valid.
Definition: IRrecv.cpp:1057
kHeader
const uint16_t kHeader
Definition: IRrecv.h:18
kFnvBasis32
const uint32_t kFnvBasis32
Definition: IRrecv.h:53