IRremoteESP8266
Loading...
Searching...
No Matches
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
18const uint16_t kHeader = 2; // Usual nr. of header entries.
19const uint16_t kFooter = 2; // Usual nr. of footer (stop bits) entries.
20const 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.
24const uint16_t kMarkExcess = 50;
25const uint16_t kRawBuf = 100; // Default length of raw capture buffer
26const uint64_t kRepeat = UINT64_MAX;
27// Default min size of reported UNKNOWN messages.
28const uint16_t kUnknownThreshold = 6;
29
30// receiver states
31const uint8_t kIdleState = 2;
32const uint8_t kMarkState = 3;
33const uint8_t kSpaceState = 4;
34const uint8_t kStopState = 5;
35const uint8_t kTolerance = 25; // default percent tolerance in measurements.
36const uint8_t kUseDefTol = 255; // Indicate to use the class default tolerance.
37const 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.
47const uint8_t kTimeoutMs = 15; // In MilliSeconds.
48#define TIMEOUT_MS kTimeoutMs // For legacy documentation.
49const 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
52const uint32_t kFnvPrime32 = 16777619UL;
53const 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
59const uint8_t kDefaultESP32Timer = SOC_TIMER_GROUP_TOTAL_TIMERS - 1;
60#else // SOC_TIMER_GROUP_TOTAL_TIMERS
61const 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.
68#else // DECODE_AC
69// Just define something (a uint64_t)
70const uint16_t kStateSizeMax = sizeof(uint64_t);
71#endif // DECODE_AC
72
73// Types
74
76typedef 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.
88
90
92typedef struct {
93 bool success; // Was the match successful?
94 uint64_t data; // The data found.
95 uint16_t used; // How many buffer positions were used.
97
98// Classes
99
102 public:
103 decode_type_t decode_type; // NEC, SONY, RC5, UNKNOWN
104 // value, address, & command are all mutually exclusive with state.
105 // i.e. They MUST NOT be used at the same time as state, so we can use a union
106 // structure to save us a handful of valuable bytes of memory.
107 union {
108 struct {
109 uint64_t value; // Decoded value
110 uint32_t address; // Decoded device address.
111 uint32_t command; // Decoded command.
112 };
113 uint8_t state[kStateSizeMax]; // Multi-byte results.
114 };
115 uint16_t bits; // Number of bits in decoded value
116 atomic_uint16_t *rawbuf; // Raw intervals in .5 us ticks
117 uint16_t rawlen; // Number of records in rawbuf.
119 bool repeat; // Is the result a repeat code?
120};
121
123class IRrecv {
124 public:
125#if defined(ESP32)
126 explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
127 const uint8_t timeout = kTimeoutMs,
128 const bool save_buffer = false,
129 const uint8_t timer_num = kDefaultESP32Timer); // Constructor
130#else // ESP32
131 explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
132 const uint8_t timeout = kTimeoutMs,
133 const bool save_buffer = false); // Constructor
134#endif // ESP32
135 ~IRrecv(void); // Destructor
136 void setTolerance(const uint8_t percent = kTolerance);
137 uint8_t getTolerance(void);
138 bool decode(decode_results *results, irparams_t *save = NULL,
139 uint8_t max_skip = 0, uint16_t noise_floor = 0);
140 void enableIRIn(const bool pullup = false);
141 void disableIRIn(void);
142 void pause(void);
143 void resume(void);
144 uint16_t getBufSize(void);
145#if DECODE_HASH
146 void setUnknownThreshold(const uint16_t length);
147#endif
148 bool match(const uint32_t measured, const uint32_t desired,
149 const uint8_t tolerance = kUseDefTol,
150 const uint16_t delta = 0);
151 bool matchMark(const uint32_t measured, const uint32_t desired,
152 const uint8_t tolerance = kUseDefTol,
153 const int16_t excess = kMarkExcess);
154 bool matchMarkRange(const uint32_t measured, const uint32_t desired,
155 const uint16_t range = 100,
156 const int16_t excess = kMarkExcess);
157 bool matchSpace(const uint32_t measured, const uint32_t desired,
158 const uint8_t tolerance = kUseDefTol,
159 const int16_t excess = kMarkExcess);
160 bool matchSpaceRange(const uint32_t measured, const uint32_t desired,
161 const uint16_t range = 100,
162 const int16_t excess = kMarkExcess);
163#ifndef UNIT_TEST
164
165 private:
166#endif
168 uint8_t _tolerance;
169#if defined(ESP32)
170 uint8_t _timer_num;
171#endif // defined(ESP32)
172#if DECODE_HASH
174#endif
175#ifdef UNIT_TEST
177#endif // UNIT_TEST
178 // These are called by decode
179 uint8_t _validTolerance(const uint8_t percentage);
181 uint16_t compare(const uint16_t oldval, const uint16_t newval);
182 uint32_t ticksLow(const uint32_t usecs,
183 const uint8_t tolerance = kUseDefTol,
184 const uint16_t delta = 0);
185 uint32_t ticksHigh(const uint32_t usecs,
186 const uint8_t tolerance = kUseDefTol,
187 const uint16_t delta = 0);
188 bool matchAtLeast(const uint32_t measured, const uint32_t desired,
189 const uint8_t tolerance = kUseDefTol,
190 const uint16_t delta = 0);
191 uint16_t _matchGeneric(atomic_uint16_t *data_ptr,
192 uint64_t *result_bits_ptr,
193 uint8_t *result_ptr,
194 const bool use_bits,
195 const uint16_t remaining,
196 const uint16_t required,
197 const uint16_t hdrmark,
198 const uint32_t hdrspace,
199 const uint16_t onemark,
200 const uint32_t onespace,
201 const uint16_t zeromark,
202 const uint32_t zerospace,
203 const uint16_t footermark,
204 const uint32_t footerspace,
205 const bool atleast = false,
206 const uint8_t tolerance = kUseDefTol,
207 const int16_t excess = kMarkExcess,
208 const bool MSBfirst = true);
209 match_result_t matchData(atomic_uint16_t *data_ptr, const uint16_t nbits,
210 const uint16_t onemark, const uint32_t onespace,
211 const uint16_t zeromark, const uint32_t zerospace,
212 const uint8_t tolerance = kUseDefTol,
213 const int16_t excess = kMarkExcess,
214 const bool MSBfirst = true,
215 const bool expectlastspace = true);
216 uint16_t matchBytes(atomic_uint16_t *data_ptr, uint8_t *result_ptr,
217 const uint16_t remaining, const uint16_t nbytes,
218 const uint16_t onemark, const uint32_t onespace,
219 const uint16_t zeromark, const uint32_t zerospace,
220 const uint8_t tolerance = kUseDefTol,
221 const int16_t excess = kMarkExcess,
222 const bool MSBfirst = true,
223 const bool expectlastspace = true);
224 uint16_t matchGeneric(atomic_uint16_t *data_ptr,
225 uint64_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, const uint32_t footerspace,
231 const bool atleast = false,
232 const uint8_t tolerance = kUseDefTol,
233 const int16_t excess = kMarkExcess,
234 const bool MSBfirst = true);
235 uint16_t matchGeneric(atomic_uint16_t *data_ptr,
236 uint8_t *result_ptr,
237 const uint16_t remaining, const uint16_t nbits,
238 const uint16_t hdrmark, const uint32_t hdrspace,
239 const uint16_t onemark, const uint32_t onespace,
240 const uint16_t zeromark, const uint32_t zerospace,
241 const uint16_t footermark,
242 const uint32_t footerspace,
243 const bool atleast = false,
244 const uint8_t tolerance = kUseDefTol,
245 const int16_t excess = kMarkExcess,
246 const bool MSBfirst = true);
247 uint16_t matchGenericConstBitTime(atomic_uint16_t *data_ptr,
248 uint64_t *result_ptr,
249 const uint16_t remaining,
250 const uint16_t nbits,
251 const uint16_t hdrmark,
252 const uint32_t hdrspace,
253 const uint16_t one,
254 const uint32_t zero,
255 const uint16_t footermark,
256 const uint32_t footerspace,
257 const bool atleast = false,
258 const uint8_t tolerance = kUseDefTol,
259 const int16_t excess = kMarkExcess,
260 const bool MSBfirst = true);
262 uint64_t *result_ptr,
263 const uint16_t remaining,
264 const uint16_t nbits,
265 const uint16_t half_period,
266 const uint16_t starting_balance = 0,
267 const uint8_t tolerance = kUseDefTol,
268 const int16_t excess = kMarkExcess,
269 const bool MSBfirst = true,
270 const bool GEThomas = true);
271 uint16_t matchManchester(atomic_const_uint16_t *data_ptr,
272 uint64_t *result_ptr,
273 const uint16_t remaining,
274 const uint16_t nbits,
275 const uint16_t hdrmark,
276 const uint32_t hdrspace,
277 const uint16_t clock_period,
278 const uint16_t footermark,
279 const uint32_t footerspace,
280 const bool atleast = false,
281 const uint8_t tolerance = kUseDefTol,
282 const int16_t excess = kMarkExcess,
283 const bool MSBfirst = true,
284 const bool GEThomas = true);
285 void crudeNoiseFilter(decode_results *results, const uint16_t floor = 0);
286 bool decodeHash(decode_results *results);
287#if DECODE_VOLTAS
288 bool decodeVoltas(decode_results *results,
289 uint16_t offset = kStartOffset,
290 const uint16_t nbits = kVoltasBits,
291 const bool strict = true);
292#endif // DECODE_VOLTAS
293#if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO)
294 bool decodeNEC(decode_results *results, uint16_t offset = kStartOffset,
295 const uint16_t nbits = kNECBits, const bool strict = true);
296#endif
297#if DECODE_ARGO
298 bool decodeArgo(decode_results *results, uint16_t offset = kStartOffset,
299 const uint16_t nbits = kArgoBits, const bool strict = true);
300 bool decodeArgoWREM3(decode_results *results, uint16_t offset = kStartOffset,
301 const uint16_t nbits = kArgo3AcControlStateLength * 8,
302 const bool strict = true);
303#endif // DECODE_ARGO
304#if DECODE_ARRIS
305 bool decodeArris(decode_results *results, uint16_t offset = kStartOffset,
306 const uint16_t nbits = kArrisBits, const bool strict = true);
307#endif // DECODE_ARRIS
308#if DECODE_SONY
309 bool decodeSony(decode_results *results, uint16_t offset = kStartOffset,
310 const uint16_t nbits = kSonyMinBits,
311 const bool strict = false);
312#endif
313#if DECODE_SANYO
314 // DISABLED due to poor quality.
315 // bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,
316 // uint16_t nbits = kSanyoSA8650BBits,
317 // bool strict = false);
318 bool decodeSanyoLC7461(decode_results *results,
319 uint16_t offset = kStartOffset,
320 const uint16_t nbits = kSanyoLC7461Bits,
321 const bool strict = true);
322#endif
323#if DECODE_SANYO_AC
324 bool decodeSanyoAc(decode_results *results,
325 uint16_t offset = kStartOffset,
326 const uint16_t nbits = kSanyoAcBits,
327 const bool strict = true);
328#endif // DECODE_SANYO_AC
329#if DECODE_SANYO_AC88
330 bool decodeSanyoAc88(decode_results *results,
331 uint16_t offset = kStartOffset,
332 const uint16_t nbits = kSanyoAc88Bits,
333 const bool strict = true);
334#endif // DECODE_SANYO_AC88
335#if DECODE_SANYO_AC152
336 bool decodeSanyoAc152(decode_results *results,
337 uint16_t offset = kStartOffset,
338 const uint16_t nbits = kSanyoAc152Bits,
339 const bool strict = true);
340#endif // DECODE_SANYO_AC152
341#if DECODE_MITSUBISHI
342 bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset,
343 const uint16_t nbits = kMitsubishiBits,
344 const bool strict = true);
345#endif
346#if DECODE_MITSUBISHI2
347 bool decodeMitsubishi2(decode_results *results,
348 uint16_t offset = kStartOffset,
349 const uint16_t nbits = kMitsubishiBits,
350 const bool strict = true);
351#endif
352#if DECODE_MITSUBISHI_AC
354 uint16_t offset = kStartOffset,
355 const uint16_t nbits = kMitsubishiACBits,
356 const bool strict = false);
357#endif
358#if DECODE_MITSUBISHI136
360 uint16_t offset = kStartOffset,
361 const uint16_t nbits = kMitsubishi136Bits,
362 const bool strict = true);
363#endif
364#if DECODE_MITSUBISHI112
366 uint16_t offset = kStartOffset,
367 const uint16_t nbits = kMitsubishi112Bits,
368 const bool strict = true);
369#endif
370#if DECODE_MITSUBISHIHEAVY
372 uint16_t offset = kStartOffset,
373 const uint16_t nbits = kMitsubishiHeavy152Bits,
374 const bool strict = true);
375#endif
376#if (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG || DECODE_MWM)
377 int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used,
378 uint16_t bitTime, const uint8_t tolerance = kUseDefTol,
379 const int16_t excess = kMarkExcess,
380 const uint16_t delta = 0, const uint8_t maxwidth = 3);
381#endif
382#if DECODE_RC5
383 bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset,
384 const uint16_t nbits = kRC5XBits,
385 const bool strict = true);
386#endif
387#if DECODE_RC6
388 bool decodeRC6(decode_results *results, uint16_t offset = kStartOffset,
389 const uint16_t nbits = kRC6Mode0Bits,
390 const bool strict = false);
391#endif
392#if DECODE_RCMM
393 bool decodeRCMM(decode_results *results, uint16_t offset = kStartOffset,
394 const uint16_t nbits = kRCMMBits,
395 const bool strict = false);
396#endif
397#if (DECODE_PANASONIC || DECODE_DENON)
398 bool decodePanasonic(decode_results *results, uint16_t offset = kStartOffset,
399 const uint16_t nbits = kPanasonicBits,
400 const bool strict = false,
401 const uint32_t manufacturer = kPanasonicManufacturer);
402#endif
403#if DECODE_LG
404 bool decodeLG(decode_results *results, uint16_t offset = kStartOffset,
405 const uint16_t nbits = kLgBits,
406 const bool strict = false);
407#endif
408#if DECODE_INAX
409 bool decodeInax(decode_results *results, uint16_t offset = kStartOffset,
410 const uint16_t nbits = kInaxBits,
411 const bool strict = true);
412#endif // DECODE_INAX
413#if DECODE_JVC
414 bool decodeJVC(decode_results *results, uint16_t offset = kStartOffset,
415 const uint16_t nbits = kJvcBits,
416 const bool strict = true);
417#endif
418#if DECODE_SAMSUNG
419 bool decodeSAMSUNG(decode_results *results, uint16_t offset = kStartOffset,
420 const uint16_t nbits = kSamsungBits,
421 const bool strict = true);
422#endif
423#if DECODE_SAMSUNG
424 bool decodeSamsung36(decode_results *results, uint16_t offset = kStartOffset,
425 const uint16_t nbits = kSamsung36Bits,
426 const bool strict = true);
427#endif
428#if DECODE_SAMSUNG_AC
429 bool decodeSamsungAC(decode_results *results, uint16_t offset = kStartOffset,
430 const uint16_t nbits = kSamsungAcBits,
431 const bool strict = true);
432#endif
433#if DECODE_WHYNTER
434 bool decodeWhynter(decode_results *results, uint16_t offset = kStartOffset,
435 const uint16_t nbits = kWhynterBits,
436 const bool strict = true);
437#endif
438#if DECODE_COOLIX
439 bool decodeCOOLIX(decode_results *results, uint16_t offset = kStartOffset,
440 const uint16_t nbits = kCoolixBits,
441 const bool strict = true);
442#endif // DECODE_COOLIX
443#if DECODE_COOLIX48
444 bool decodeCoolix48(decode_results *results, uint16_t offset = kStartOffset,
445 const uint16_t nbits = kCoolix48Bits,
446 const bool strict = true);
447#endif // DECODE_COOLIX48
448#if DECODE_DENON
449 bool decodeDenon(decode_results *results, uint16_t offset = kStartOffset,
450 const uint16_t nbits = kDenonBits,
451 const bool strict = true);
452#endif
453#if DECODE_DISH
454 bool decodeDISH(decode_results *results, uint16_t offset = kStartOffset,
455 const uint16_t nbits = kDishBits,
456 const bool strict = true);
457#endif
458#if (DECODE_SHARP || DECODE_DENON)
459 bool decodeSharp(decode_results *results, uint16_t offset = kStartOffset,
460 const uint16_t nbits = kSharpBits,
461 const bool strict = true, const bool expansion = true);
462#endif
463#if DECODE_SHARP_AC
464 bool decodeSharpAc(decode_results *results, uint16_t offset = kStartOffset,
465 const uint16_t nbits = kSharpAcBits,
466 const bool strict = true);
467#endif
468#if DECODE_AIWA_RC_T501
469 bool decodeAiwaRCT501(decode_results *results, uint16_t offset = kStartOffset,
470 const uint16_t nbits = kAiwaRcT501Bits,
471 const bool strict = true);
472#endif
473#if DECODE_NIKAI
474 bool decodeNikai(decode_results *results, uint16_t offset = kStartOffset,
475 const uint16_t nbits = kNikaiBits,
476 const bool strict = true);
477#endif
478#if DECODE_MAGIQUEST
479 bool decodeMagiQuest(decode_results *results, uint16_t offset = kStartOffset,
480 const uint16_t nbits = kMagiquestBits,
481 const bool strict = true);
482#endif
483#if DECODE_KELVINATOR
484 bool decodeKelvinator(decode_results *results, uint16_t offset = kStartOffset,
485 const uint16_t nbits = kKelvinatorBits,
486 const bool strict = true);
487#endif
488#if DECODE_DAIKIN
489 bool decodeDaikin(decode_results *results, uint16_t offset = kStartOffset,
490 const uint16_t nbits = kDaikinBits,
491 const bool strict = true);
492#endif
493#if DECODE_DAIKIN64
494 bool decodeDaikin64(decode_results *results, uint16_t offset = kStartOffset,
495 const uint16_t nbits = kDaikin64Bits,
496 const bool strict = true);
497#endif // DECODE_DAIKIN64
498#if DECODE_DAIKIN128
499 bool decodeDaikin128(decode_results *results, uint16_t offset = kStartOffset,
500 const uint16_t nbits = kDaikin128Bits,
501 const bool strict = true);
502#endif // DECODE_DAIKIN128
503#if DECODE_DAIKIN152
504 bool decodeDaikin152(decode_results *results, uint16_t offset = kStartOffset,
505 const uint16_t nbits = kDaikin152Bits,
506 const bool strict = true);
507#endif // DECODE_DAIKIN152
508#if DECODE_DAIKIN160
509 bool decodeDaikin160(decode_results *results, uint16_t offset = kStartOffset,
510 const uint16_t nbits = kDaikin160Bits,
511 const bool strict = true);
512#endif // DECODE_DAIKIN160
513#if DECODE_DAIKIN176
514 bool decodeDaikin176(decode_results *results, uint16_t offset = kStartOffset,
515 const uint16_t nbits = kDaikin176Bits,
516 const bool strict = true);
517#endif // DECODE_DAIKIN176
518#if DECODE_DAIKIN2
519 bool decodeDaikin2(decode_results *results, uint16_t offset = kStartOffset,
520 const uint16_t nbits = kDaikin2Bits,
521 const bool strict = true);
522#endif
523#if DECODE_DAIKIN200
524 bool decodeDaikin200(decode_results *results, uint16_t offset = kStartOffset,
525 const uint16_t nbits = kDaikin200Bits,
526 const bool strict = true);
527#endif // DECODE_DAIKIN200
528#if DECODE_DAIKIN216
529 bool decodeDaikin216(decode_results *results, uint16_t offset = kStartOffset,
530 const uint16_t nbits = kDaikin216Bits,
531 const bool strict = true);
532#endif // DECODE_DAIKIN216
533#if DECODE_DAIKIN312
534 bool decodeDaikin312(decode_results *results, uint16_t offset = kStartOffset,
535 const uint16_t nbits = kDaikin312Bits,
536 const bool strict = true);
537#endif // DECODE_DAIKIN312
538#if DECODE_TOSHIBA_AC
539 bool decodeToshibaAC(decode_results *results, uint16_t offset = kStartOffset,
540 const uint16_t nbits = kToshibaACBits,
541 const bool strict = true);
542#endif
543#if DECODE_TROTEC
544 bool decodeTrotec(decode_results *results, uint16_t offset = kStartOffset,
545 const uint16_t nbits = kTrotecBits,
546 const bool strict = true);
547#endif // DECODE_TROTEC
548#if DECODE_TROTEC_3550
549 bool decodeTrotec3550(decode_results *results, uint16_t offset = kStartOffset,
550 const uint16_t nbits = kTrotecBits,
551 const bool strict = true);
552#endif // DECODE_TROTEC_3550
553#if DECODE_MIDEA
554 bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset,
555 const uint16_t nbits = kMideaBits,
556 const bool strict = true);
557#endif // DECODE_MIDEA
558#if DECODE_MIDEA24
559 bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset,
560 const uint16_t nbits = kMidea24Bits,
561 const bool strict = true);
562#endif // DECODE_MIDEA24
563#if DECODE_FUJITSU_AC
564 bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset,
565 const uint16_t nbits = kFujitsuAcBits,
566 const bool strict = false);
567#endif
568#if DECODE_LASERTAG
569 bool decodeLasertag(decode_results *results, uint16_t offset = kStartOffset,
570 const uint16_t nbits = kLasertagBits,
571 const bool strict = true);
572#endif
573#if DECODE_MILESTAG2
574 bool decodeMilestag2(decode_results *results, uint16_t offset = kStartOffset,
575 const uint16_t nbits = kMilesTag2ShotBits,
576 const bool strict = true);
577#endif
578#if DECODE_CARRIER_AC
579 bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
580 const uint16_t nbits = kCarrierAcBits,
581 const bool strict = true);
582#endif // DECODE_CARRIER_AC
583#if DECODE_CARRIER_AC40
584 bool decodeCarrierAC40(decode_results *results,
585 uint16_t offset = kStartOffset,
586 const uint16_t nbits = kCarrierAc40Bits,
587 const bool strict = true);
588#endif // DECODE_CARRIER_AC40
589#if DECODE_CARRIER_AC84
590 bool decodeCarrierAC84(decode_results *results,
591 uint16_t offset = kStartOffset,
592 const uint16_t nbits = kCarrierAc84Bits,
593 const bool strict = true);
594#endif // DECODE_CARRIER_AC84
595#if DECODE_CARRIER_AC64
596 bool decodeCarrierAC64(decode_results *results,
597 uint16_t offset = kStartOffset,
598 const uint16_t nbits = kCarrierAc64Bits,
599 const bool strict = true);
600#endif // DECODE_CARRIER_AC64
601#if DECODE_CARRIER_AC128
603 uint16_t offset = kStartOffset,
604 const uint16_t nbits = kCarrierAc128Bits,
605 const bool strict = true);
606#endif // DECODE_CARRIER_AC128
607#if DECODE_GOODWEATHER
608 bool decodeGoodweather(decode_results *results,
609 uint16_t offset = kStartOffset,
610 const uint16_t nbits = kGoodweatherBits,
611 const bool strict = true);
612#endif // DECODE_GOODWEATHER
613#if DECODE_GORENJE
614 bool decodeGorenje(decode_results *results, uint16_t offset = kStartOffset,
615 const uint16_t nbits = kGorenjeBits,
616 const bool strict = true);
617#endif // DECODE_GORENJE
618#if DECODE_GREE
619 bool decodeGree(decode_results *results, uint16_t offset = kStartOffset,
620 const uint16_t nbits = kGreeBits,
621 const bool strict = true);
622#endif
623#if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02 || DECODE_HAIER_AC160 || \
624 DECODE_HAIER_AC176)
625 bool decodeHaierAC(decode_results *results, uint16_t offset = kStartOffset,
626 const uint16_t nbits = kHaierACBits,
627 const bool strict = true);
628#endif
629#if DECODE_HAIER_AC_YRW02
631 uint16_t offset = kStartOffset,
632 const uint16_t nbits = kHaierACYRW02Bits,
633 const bool strict = true);
634#endif
635#if DECODE_HAIER_AC160
636 bool decodeHaierAC160(decode_results *results,
637 uint16_t offset = kStartOffset,
638 const uint16_t nbits = kHaierAC160Bits,
639 const bool strict = true);
640#endif // DECODE_HAIER_AC160
641#if DECODE_HAIER_AC176
642 bool decodeHaierAC176(decode_results *results,
643 uint16_t offset = kStartOffset,
644 const uint16_t nbits = kHaierAC176Bits,
645 const bool strict = true);
646#endif // DECODE_HAIER_AC176
647#if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC264 || \
648 DECODE_HITACHI_AC344)
649 bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset,
650 const uint16_t nbits = kHitachiAcBits,
651 const bool strict = true, const bool MSBfirst = true);
652#endif // (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC264 ||
653 // DECODE_HITACHI_AC344)
654#if DECODE_HITACHI_AC1
655 bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset,
656 const uint16_t nbits = kHitachiAc1Bits,
657 const bool strict = true);
658#endif
659#if DECODE_HITACHI_AC3
660 bool decodeHitachiAc3(decode_results *results,
661 uint16_t offset = kStartOffset,
662 const uint16_t nbits = kHitachiAc3Bits,
663 const bool strict = true);
664#endif // DECODE_HITACHI_AC3
665#if DECODE_HITACHI_AC296
667 uint16_t offset = kStartOffset,
668 const uint16_t nbits = kHitachiAc296Bits,
669 const bool strict = true);
670#endif // DECODE_HITACHI_AC296
671#if DECODE_HITACHI_AC424
673 uint16_t offset = kStartOffset,
674 const uint16_t nbits = kHitachiAc424Bits,
675 const bool strict = true);
676#endif // DECODE_HITACHI_AC424
677#if DECODE_GICABLE
678 bool decodeGICable(decode_results *results, uint16_t offset = kStartOffset,
679 const uint16_t nbits = kGicableBits,
680 const bool strict = true);
681#endif
682#if DECODE_WHIRLPOOL_AC
683 bool decodeWhirlpoolAC(decode_results *results,
684 uint16_t offset = kStartOffset,
685 const uint16_t nbits = kWhirlpoolAcBits,
686 const bool strict = true);
687#endif
688#if DECODE_LUTRON
689 bool decodeLutron(decode_results *results, uint16_t offset = kStartOffset,
690 const uint16_t nbits = kLutronBits,
691 const bool strict = true);
692#endif
693#if DECODE_ELECTRA_AC
694 bool decodeElectraAC(decode_results *results, uint16_t offset = kStartOffset,
695 const uint16_t nbits = kElectraAcBits,
696 const bool strict = true);
697#endif
698#if DECODE_PANASONIC_AC
699 bool decodePanasonicAC(decode_results *results,
700 uint16_t offset = kStartOffset,
701 const uint16_t nbits = kPanasonicAcBits,
702 const bool strict = true);
703#endif // DECODE_PANASONIC_AC
704#if DECODE_PANASONIC_AC32
706 uint16_t offset = kStartOffset,
707 const uint16_t nbits = kPanasonicAc32Bits,
708 const bool strict = true);
709#endif // DECODE_PANASONIC_AC32
710#if DECODE_PIONEER
711 bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
712 const uint16_t nbits = kPioneerBits,
713 const bool strict = true);
714#endif
715#if DECODE_MWM
716 bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
717 const uint16_t nbits = 24,
718 const bool strict = true);
719#endif
720#if DECODE_VESTEL_AC
721 bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
722 const uint16_t nbits = kVestelAcBits,
723 const bool strict = true);
724#endif
725#if DECODE_TECO
726 bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
727 const uint16_t nbits = kTecoBits,
728 const bool strict = false);
729#endif
730#if DECODE_LEGOPF
731 bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
732 const uint16_t nbits = kLegoPfBits,
733 const bool strict = true);
734#endif
735#if DECODE_NEOCLIMA
736 bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
737 const uint16_t nbits = kNeoclimaBits,
738 const bool strict = true);
739#endif // DECODE_NEOCLIMA
740#if DECODE_AMCOR
741 bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
742 const uint16_t nbits = kAmcorBits,
743 const bool strict = true);
744#endif // DECODE_AMCOR
745#if DECODE_EPSON
746 bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
747 const uint16_t nbits = kEpsonBits,
748 const bool strict = true);
749#endif // DECODE_EPSON
750#if DECODE_SYMPHONY
751 bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
752 const uint16_t nbits = kSymphonyBits,
753 const bool strict = true);
754#endif // DECODE_SYMPHONY
755#if DECODE_AIRWELL
756 bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
757 const uint16_t nbits = kAirwellBits,
758 const bool strict = true);
759#endif // DECODE_AIRWELL
760#if DECODE_DELONGHI_AC
761 bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
762 const uint16_t nbits = kDelonghiAcBits,
763 const bool strict = true);
764#endif // DECODE_DELONGHI_AC
765#if DECODE_DOSHISHA
766 bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
767 const uint16_t nbits = kDoshishaBits,
768 const bool strict = true);
769#endif // DECODE_DOSHISHA
770#if DECODE_MULTIBRACKETS
772 uint16_t offset = kStartOffset,
773 const uint16_t nbits = kMultibracketsBits,
774 const bool strict = true);
775#endif // DECODE_MULTIBRACKETS
776#if DECODE_TECHNIBEL_AC
777 bool decodeTechnibelAc(decode_results *results,
778 uint16_t offset = kStartOffset,
779 const uint16_t nbits = kTechnibelAcBits,
780 const bool strict = true);
781#endif // DECODE_TECHNIBEL_AC
782#if DECODE_CORONA_AC
783 bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
784 const uint16_t nbits = kCoronaAcBitsShort,
785 const bool strict = true);
786#endif // DECODE_CORONA_AC
787#if DECODE_ZEPEAL
788 bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
789 const uint16_t nbits = kZepealBits,
790 const bool strict = true);
791#endif // DECODE_ZEPEAL
792#if DECODE_METZ
793 bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
794 const uint16_t nbits = kMetzBits,
795 const bool strict = true);
796#endif // DECODE_METZ
797#if DECODE_TRANSCOLD
798 bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
799 const uint16_t nbits = kTranscoldBits,
800 const bool strict = true);
801#endif // DECODE_TRANSCOLD
802#if DECODE_MIRAGE
803 bool decodeMirage(decode_results *results,
804 uint16_t offset = kStartOffset,
805 const uint16_t nbits = kMirageBits,
806 const bool strict = true);
807#endif // DECODE_MIRAGE
808#if DECODE_ELITESCREENS
810 uint16_t offset = kStartOffset,
811 const uint16_t nbits = kEliteScreensBits,
812 const bool strict = true);
813#endif // DECODE_ELITESCREENS
814#if DECODE_ECOCLIM
815 bool decodeEcoclim(decode_results *results, uint16_t offset = kStartOffset,
816 const uint16_t nbits = kEcoclimBits,
817 const bool strict = true);
818#endif // DECODE_ECOCLIM
819#if DECODE_XMP
820 bool decodeXmp(decode_results *results, uint16_t offset = kStartOffset,
821 const uint16_t nbits = kXmpBits, const bool strict = true);
822#endif // DECODE_XMP
823#if DECODE_TRUMA
824 bool decodeTruma(decode_results *results, uint16_t offset = kStartOffset,
825 const uint16_t nbits = kTrumaBits, const bool strict = true);
826#endif // DECODE_TRUMA
827#if DECODE_TEKNOPOINT
828 bool decodeTeknopoint(decode_results *results, uint16_t offset = kStartOffset,
829 const uint16_t nbits = kTeknopointBits,
830 const bool strict = true);
831#endif // DECODE_TEKNOPOINT
832#if DECODE_KELON
833 bool decodeKelon(decode_results *results, uint16_t offset = kStartOffset,
834 const uint16_t nbits = kKelonBits, const bool strict = true);
835#endif // DECODE_KELON
836#if DECODE_KELON168
837 bool decodeKelon168(decode_results *results, uint16_t offset = kStartOffset,
838 const uint16_t nbits = kKelon168Bits,
839 const bool strict = true);
840#endif // DECODE_KELON168
841#if DECODE_BOSE
842 bool decodeBose(decode_results *results, uint16_t offset = kStartOffset,
843 const uint16_t nbits = kBoseBits, const bool strict = true);
844#endif // DECODE_BOSE
845#if DECODE_RHOSS
846 bool decodeRhoss(decode_results *results, uint16_t offset = kStartOffset,
847 const uint16_t nbits = kRhossBits, const bool strict = true);
848#endif // DECODE_RHOSS
849#if DECODE_AIRTON
850 bool decodeAirton(decode_results *results, uint16_t offset = kStartOffset,
851 const uint16_t nbits = kAirtonBits,
852 const bool strict = true);
853#endif // DECODE_AIRTON
854#if DECODE_TOTO
855 bool decodeToto(decode_results *results, uint16_t offset = kStartOffset,
856 const uint16_t nbits = kTotoBits,
857 const bool strict = true);
858#endif // DECODE_TOTO
859#if DECODE_CLIMABUTLER
860 bool decodeClimaButler(decode_results *results,
861 uint16_t offset = kStartOffset,
862 const uint16_t nbits = kClimaButlerBits,
863 const bool strict = true);
864#endif // DECODE_CLIMABUTLER
865#if DECODE_TCL96AC
866 bool decodeTcl96Ac(decode_results *results,
867 uint16_t offset = kStartOffset,
868 const uint16_t nbits = kTcl96AcBits,
869 const bool strict = true);
870#endif // DECODE_TCL96AC
871#if DECODE_BOSCH144
872 bool decodeBosch144(decode_results *results,
873 uint16_t offset = kStartOffset,
874 const uint16_t nbits = kBosch144Bits,
875 const bool strict = true);
876#endif // DECODE_BOSCH144
877#if DECODE_WOWWEE
878 bool decodeWowwee(decode_results *results,
879 uint16_t offset = kStartOffset,
880 const uint16_t nbits = kWowweeBits,
881 const bool strict = true);
882#endif // DECODE_WOWWEE
883#if DECODE_YORK
884 bool decodeYork(decode_results *results,
885 uint16_t offset = kStartOffset,
886 const uint16_t nbits = kYorkBits,
887 const bool strict = true);
888#endif // DECODE_YORK
889#if DECODE_BLUESTARHEAVY
891 uint16_t offset = kStartOffset,
892 const uint16_t nbits = kBluestarHeavyBits,
893 const bool strict = true);
894#endif // DECODE_BLUESTARHEAVY
895#if DECODE_EUROM
896 bool decodeEurom(decode_results *results,
897 uint16_t offset = kStartOffset,
898 const uint16_t nbits = kEuromBits,
899 const bool strict = true);
900#endif // DECODE_EUROM
901};
902
903#endif // IRRECV_H_
const uint32_t kFnvBasis32
Definition IRrecv.h:53
const uint8_t kUseDefTol
Definition IRrecv.h:36
const uint8_t kStopState
Definition IRrecv.h:34
const uint16_t kHeader
Definition IRrecv.h:18
const uint16_t kRawTick
Definition IRrecv.h:37
const uint16_t kStartOffset
Definition IRrecv.h:20
const uint16_t kFooter
Definition IRrecv.h:19
const uint16_t kMaxTimeoutMs
Definition IRrecv.h:49
const uint8_t kTolerance
Definition IRrecv.h:35
const uint8_t kDefaultESP32Timer
Definition IRrecv.h:59
const uint16_t kMarkExcess
Definition IRrecv.h:24
const uint16_t kUnknownThreshold
Definition IRrecv.h:28
const uint8_t kIdleState
Definition IRrecv.h:31
const uint16_t kRawBuf
Definition IRrecv.h:25
const uint16_t kStateSizeMax
Definition IRrecv.h:67
const uint32_t kFnvPrime32
Definition IRrecv.h:52
const uint8_t kSpaceState
Definition IRrecv.h:33
const uint8_t kMarkState
Definition IRrecv.h:32
const uint8_t kTimeoutMs
Definition IRrecv.h:47
const uint64_t kRepeat
Definition IRrecv.h:26
volatile irparams_t atomic_irparams_t
Definition IRrecv.h:89
const uint16_t kTechnibelAcBits
Definition IRremoteESP8266.h:1251
const uint16_t kEliteScreensBits
Definition IRremoteESP8266.h:1266
const uint16_t kHitachiAc2StateLength
Definition IRremoteESP8266.h:1298
const uint16_t kCoronaAcBitsShort
Definition IRremoteESP8266.h:1216
const uint16_t kWhirlpoolAcBits
Definition IRremoteESP8266.h:1447
const uint16_t kToshibaACBits
Definition IRremoteESP8266.h:1430
const uint16_t kWowweeBits
Definition IRremoteESP8266.h:1450
const uint32_t kPanasonicManufacturer
Definition IRremoteESP8266.h:1367
const uint16_t kPanasonicAcBits
Definition IRremoteESP8266.h:1372
const uint16_t kLgBits
Definition IRremoteESP8266.h:1326
const uint16_t kDenonBits
Definition IRremoteESP8266.h:1253
const uint16_t kRCMMBits
Definition IRremoteESP8266.h:1383
const uint16_t kTcl96AcBits
Definition IRremoteESP8266.h:1420
const uint16_t kDaikin216Bits
Definition IRremoteESP8266.h:1244
volatile uint16_t atomic_uint16_t
Definition IRremoteESP8266.h:62
const uint16_t kAmcorBits
Definition IRremoteESP8266.h:1183
const uint16_t kArgoBits
Definition IRremoteESP8266.h:1187
const uint16_t kTeknopointBits
Definition IRremoteESP8266.h:1428
const uint16_t kLasertagBits
Definition IRremoteESP8266.h:1322
volatile const uint16_t atomic_const_uint16_t
Definition IRremoteESP8266.h:63
const uint16_t kCarrierAc64Bits
Definition IRremoteESP8266.h:1206
const uint16_t kWhynterBits
Definition IRremoteESP8266.h:1449
const uint16_t kBosch144Bits
Definition IRremoteESP8266.h:1198
const uint16_t kCarrierAc40Bits
Definition IRremoteESP8266.h:1204
const uint16_t kAirwellBits
Definition IRremoteESP8266.h:1177
const uint16_t kDaikin128Bits
Definition IRremoteESP8266.h:1232
const uint16_t kSamsung36Bits
Definition IRremoteESP8266.h:1385
const uint16_t kDaikinBits
Definition IRremoteESP8266.h:1219
const uint16_t kNECBits
Definition IRremoteESP8266.h:1362
const uint16_t kCarrierAcBits
Definition IRremoteESP8266.h:1202
const uint16_t kPioneerBits
Definition IRremoteESP8266.h:1376
const uint16_t kSharpAcBits
Definition IRremoteESP8266.h:1408
const uint16_t kRhossBits
Definition IRremoteESP8266.h:1463
const uint16_t kSonyMinBits
Definition IRremoteESP8266.h:1415
const uint16_t kMirageBits
Definition IRremoteESP8266.h:1338
const uint16_t kHaierAC176Bits
Definition IRremoteESP8266.h:1291
const uint16_t kEpsonBits
Definition IRremoteESP8266.h:1261
const uint16_t kDaikin176Bits
Definition IRremoteESP8266.h:1238
const uint16_t kArgo3AcControlStateLength
Definition IRremoteESP8266.h:1189
const uint16_t kEuromBits
Definition IRremoteESP8266.h:1469
const uint16_t kDelonghiAcBits
Definition IRremoteESP8266.h:1249
const uint16_t kSamsungBits
Definition IRremoteESP8266.h:1384
const uint16_t kJvcBits
Definition IRremoteESP8266.h:1314
const uint16_t kTotoBits
Definition IRremoteESP8266.h:1436
const uint16_t kLutronBits
Definition IRremoteESP8266.h:1329
const uint16_t kRC6Mode0Bits
Definition IRremoteESP8266.h:1381
const uint16_t kDaikin64Bits
Definition IRremoteESP8266.h:1226
const uint16_t kSharpBits
Definition IRremoteESP8266.h:1406
const uint16_t kLegoPfBits
Definition IRremoteESP8266.h:1324
const uint16_t kAiwaRcT501Bits
Definition IRremoteESP8266.h:1179
const uint16_t kMitsubishiACBits
Definition IRremoteESP8266.h:1345
const uint16_t kKelonBits
Definition IRremoteESP8266.h:1315
const uint16_t kClimaButlerBits
Definition IRremoteESP8266.h:1465
const uint16_t kSanyoAc88Bits
Definition IRremoteESP8266.h:1394
const uint16_t kNikaiBits
Definition IRremoteESP8266.h:1361
const uint16_t kPanasonicBits
Definition IRremoteESP8266.h:1366
const uint16_t kMitsubishi136Bits
Definition IRremoteESP8266.h:1348
const uint16_t kElectraAcBits
Definition IRremoteESP8266.h:1264
const uint16_t kTrumaBits
Definition IRremoteESP8266.h:1445
const uint16_t kDaikin160Bits
Definition IRremoteESP8266.h:1229
const uint16_t kHaierACYRW02Bits
Definition IRremoteESP8266.h:1285
const uint16_t kHitachiAc296Bits
Definition IRremoteESP8266.h:1307
const uint16_t kHaierAC160Bits
Definition IRremoteESP8266.h:1288
const uint16_t kMultibracketsBits
Definition IRremoteESP8266.h:1359
const uint16_t kHitachiAc1Bits
Definition IRremoteESP8266.h:1297
const uint16_t kAirtonBits
Definition IRremoteESP8266.h:1175
const uint16_t kHitachiAc424Bits
Definition IRremoteESP8266.h:1311
const uint16_t kTrotecBits
Definition IRremoteESP8266.h:1443
const uint16_t kMitsubishiHeavy152Bits
Definition IRremoteESP8266.h:1357
const uint16_t kSymphonyBits
Definition IRremoteESP8266.h:1417
const uint16_t kMitsubishiBits
Definition IRremoteESP8266.h:1340
const uint16_t kTranscoldBits
Definition IRremoteESP8266.h:1440
const uint16_t kRC5XBits
Definition IRremoteESP8266.h:1380
const uint16_t kKelon168Bits
Definition IRremoteESP8266.h:1317
const uint16_t kHitachiAc3Bits
Definition IRremoteESP8266.h:1301
const uint16_t kDaikin312Bits
Definition IRremoteESP8266.h:1247
const uint16_t kDaikin200Bits
Definition IRremoteESP8266.h:1241
const uint16_t kCoolix48Bits
Definition IRremoteESP8266.h:1200
const uint16_t kGreeBits
Definition IRremoteESP8266.h:1279
const uint16_t kEcoclimBits
Definition IRremoteESP8266.h:1259
const uint16_t kGicableBits
Definition IRremoteESP8266.h:1273
const uint16_t kKelvinatorBits
Definition IRremoteESP8266.h:1320
const uint16_t kSanyoLC7461Bits
Definition IRremoteESP8266.h:1402
const uint16_t kMetzBits
Definition IRremoteESP8266.h:1331
const uint16_t kVoltasBits
Definition IRremoteESP8266.h:1456
const uint16_t kYorkBits
Definition IRremoteESP8266.h:1466
const uint16_t kSanyoAcBits
Definition IRremoteESP8266.h:1392
const uint16_t kHaierACBits
Definition IRremoteESP8266.h:1282
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition IRremoteESP8266.h:1036
const uint16_t kMagiquestBits
Definition IRremoteESP8266.h:1330
const uint16_t kCarrierAc128Bits
Definition IRremoteESP8266.h:1212
const uint16_t kPanasonicAc32Bits
Definition IRremoteESP8266.h:1375
const uint16_t kSamsungAcBits
Definition IRremoteESP8266.h:1387
const uint16_t kXmpBits
Definition IRremoteESP8266.h:1453
const uint16_t kMilesTag2ShotBits
Definition IRremoteESP8266.h:1458
const uint8_t kVestelAcBits
Definition IRremoteESP8266.h:1452
const uint16_t kSanyoAc152Bits
Definition IRremoteESP8266.h:1397
const uint16_t kBoseBits
Definition IRremoteESP8266.h:1461
const uint16_t kMitsubishi112Bits
Definition IRremoteESP8266.h:1351
const uint16_t kDishBits
Definition IRremoteESP8266.h:1256
const uint16_t kGorenjeBits
Definition IRremoteESP8266.h:1277
const uint16_t kHitachiAcBits
Definition IRremoteESP8266.h:1294
const uint16_t kFujitsuAcBits
Definition IRremoteESP8266.h:1271
const uint16_t kCoolixBits
Definition IRremoteESP8266.h:1199
const uint16_t kDoshishaBits
Definition IRremoteESP8266.h:1258
const uint16_t kTecoBits
Definition IRremoteESP8266.h:1425
const uint16_t kDaikin152Bits
Definition IRremoteESP8266.h:1235
const uint16_t kZepealBits
Definition IRremoteESP8266.h:1454
const uint16_t kArrisBits
Definition IRremoteESP8266.h:1194
const uint16_t kCarrierAc84Bits
Definition IRremoteESP8266.h:1209
const uint16_t kInaxBits
Definition IRremoteESP8266.h:1312
const uint16_t kGoodweatherBits
Definition IRremoteESP8266.h:1275
const uint16_t kBluestarHeavyBits
Definition IRremoteESP8266.h:1196
const uint16_t kMideaBits
Definition IRremoteESP8266.h:1333
const uint16_t kMidea24Bits
Definition IRremoteESP8266.h:1335
const uint16_t kDaikin2Bits
Definition IRremoteESP8266.h:1224
const uint16_t kNeoclimaBits
Definition IRremoteESP8266.h:1364
Class for receiving IR messages.
Definition IRrecv.h:123
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
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
void setUnknownThreshold(const uint16_t length)
Set the minimum length we will consider for reporting UNKNOWN message types.
Definition IRrecv.cpp:503
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:3375
uint8_t _tolerance
Definition IRrecv.h:168
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:3782
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
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
uint8_t _validTolerance(const uint8_t percentage)
Convert the tolerance percentage into something valid.
Definition IRrecv.cpp:1248
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
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:95
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:865
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
bool decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)
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:601
uint8_t getTolerance(void)
Get the base tolerance percentage for matching incoming IR messages.
Definition IRrecv.cpp:517
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
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
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
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
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
void pause(void)
Pause collection of received IR data.
Definition IRrecv.cpp:439
atomic_irparams_t * _getParamsPtr(void)
Unit test helper to get access to the params structure.
Definition IRrecv.cpp:2119
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:318
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:1418
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
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
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
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:1401
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:3874
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
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
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:697
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
bool decodeEurom(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kEuromBits, const bool strict=true)
Decode the supplied Eurom message. Status: STABLE / Confirmed Working.
Definition ir_Eurom.cpp:65
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:159
uint16_t matchManchester(atomic_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:1891
IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false)
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
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
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
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
bool decodeBluestarHeavy(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kBluestarHeavyBits, const bool strict=true)
Decode the supplied BluestarHeavy message. Status: BETA / Tested.
Definition ir_BluestarHeavy.cpp:52
bool decodeYork(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=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
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
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:1335
match_result_t matchData(atomic_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:1495
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
void enableIRIn(const bool pullup=false)
Set up and (re)start the IR capture mechanism.
Definition IRrecv.cpp:361
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:1271
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
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
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
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
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
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
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
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:384
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
uint16_t getBufSize(void)
Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.
Definition IRrecv.cpp:498
void resume(void)
Resume collection of received IR data.
Definition IRrecv.cpp:452
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
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 * irparams_save
Definition IRrecv.h:167
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
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
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
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
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:1022
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:1457
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:1682
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
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
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
~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:349
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:994
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:949
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:1284
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
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
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:244
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
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
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:1733
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:1694
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:354
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
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:723
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
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:161
void disableIRIn(void)
Stop collection of any received IR data. Disable any timers and interrupts.
Definition IRrecv.cpp:419
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:1398
void setTolerance(const uint8_t percent=kTolerance)
Set the base tolerance percentage for matching incoming IR messages.
Definition IRrecv.cpp:511
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
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:2429
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
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:508
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
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
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
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
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
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:131
uint16_t matchGeneric(atomic_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:1710
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
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:532
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
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:3014
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
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
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
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
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:1257
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
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:2924
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
uint16_t matchGenericConstBitTime(atomic_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:1804
uint16_t matchBytes(atomic_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:1556
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
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
uint16_t _matchGeneric(atomic_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:1608
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:439
uint16_t compare(const uint16_t oldval, const uint16_t newval)
Compare two tick values.
Definition IRrecv.cpp:1436
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:1355
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:310
uint16_t _unknown_threshold
Definition IRrecv.h:173
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
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
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:1379
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
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
uint16_t matchManchesterData(atomic_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:1998
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
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
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:1359
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:1315
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:524
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:1468
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
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:588
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
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:2037
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:1434
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
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
void copyIrParams(atomic_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:474
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
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
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
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
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:823
uint8_t _timer_num
Definition IRrecv.h:170
Results returned from the decoder.
Definition IRrecv.h:101
uint64_t value
Definition IRrecv.h:109
bool repeat
Definition IRrecv.h:119
uint32_t address
Definition IRrecv.h:110
bool overflow
Definition IRrecv.h:118
uint16_t rawlen
Definition IRrecv.h:117
uint32_t command
Definition IRrecv.h:111
decode_type_t decode_type
Definition IRrecv.h:103
uint16_t bits
Definition IRrecv.h:115
uint8_t state[kStateSizeMax]
Definition IRrecv.h:113
atomic_uint16_t * rawbuf
Definition IRrecv.h:116
Information for the interrupt handler.
Definition IRrecv.h:76
uint16_t rawlen
Definition IRrecv.h:84
uint8_t timeout
Definition IRrecv.h:86
uint16_t bufsize
Definition IRrecv.h:80
uint8_t recvpin
Definition IRrecv.h:77
uint8_t rcvstate
Definition IRrecv.h:78
uint16_t timer
Definition IRrecv.h:79
uint16_t * rawbuf
Definition IRrecv.h:81
uint8_t overflow
Definition IRrecv.h:85
Results from a data match.
Definition IRrecv.h:92
bool success
Definition IRrecv.h:93
uint16_t used
Definition IRrecv.h:95
uint64_t data
Definition IRrecv.h:94