From 434582a4626275f1fce0732f2133868a0e94428a Mon Sep 17 00:00:00 2001 From: David Conran Date: Tue, 15 Mar 2022 12:21:28 +1000 Subject: [PATCH] v2.8.2 release (#1777) ##_v2.8.2 (20220314)_ **[Bug Fixes]** - ESP32-C3: Fix reboot/crashes on ESP32-C3s when receiving. (#1768 #1751) **[Features]** - HITACHI_AC296: Add `IRac` class support & tests. (#1776 #1758 #1757) - Support for Hitachi RAS-70YHA3 (remote RAR-3U3) (#1758 #1757) - LG: Add Swing Toggle support for Model `LG6711A20083V` (#1771 #1770) - IRMQTTServer: add `MQTT_SERVER_AUTODETECT_ENABLE` via mqtt mDNS (#1769) - Experimental basic support for Kelon 168 bit / 21 byte protocol. (#1747 #1745 #1744) - MitsubishiAC: Tweak repeat gap timing. (#1760 #1759) - Gree YAP0F8 (Detected as Kelvinator) vertical position set support (#1756) - Make KELON (48 bit) protocol decoding stricter. (#1746 #1744) - IRMQTTServer V1.6.1 (#1740 #1739 #1729) - HITACHI_AC264: Add minimal detailed support. (#1735 #1729) - LG2: Improve Light toggle msg handling. (#1738 #1737) - MIDEA: Add support for Quiet, Clean & Freeze Protect controls. (#1734 #1733) - Add basic support for HITACHI_AC264 264bit protocol. (#1730 #1729) - ESP32-C3: Work around for some C3 specific compiler issues again. (#1732 #1695) **[Misc]** - MIDEA: Update supported devices (#1774 #1773 #1716) - Update devices supported by ELECTRA_AC (#1766 #1765) - Improve documentation for `encodePioneer()` (#1761 #1749) - Update (un)supported DAIKIN128 devices. (#1752) - Refactor `decodeCOOLIX()` code & add another test case. (#1750 #1748) - Simplify code based on state_t being initialised by default. (#1736 #1699) - Add comments to help Teknopoint users. (#1731 #1728) - Fix library version string calculation. (#1727 #1725) - Confirm we can reproduce `TurnOnFujitsuAC.ino` via IRac/IRMQTTServer. (#1726 #1701) --- README.md | 4 +- README_de.md | 4 +- README_fr.md | 4 +- ReleaseNotes.md | 33 + SupportedProtocols.md | 23 +- docs/doxygen/html/IRac_8h_source.html | 658 +-- docs/doxygen/html/IRrecv_8h.html | 4 +- docs/doxygen/html/IRrecv_8h_source.html | 1818 +++---- docs/doxygen/html/IRremoteESP8266_8h.html | 108 +- .../html/IRremoteESP8266_8h_source.html | 3305 ++++++------ docs/doxygen/html/IRsend_8h.html | 13 +- docs/doxygen/html/IRsend_8h_source.html | 1656 +++--- docs/doxygen/html/IRtext_8cpp.html | 457 +- docs/doxygen/html/IRtext_8h.html | 144 +- docs/doxygen/html/IRtext_8h_source.html | 412 +- docs/doxygen/html/IRutils_8h_source.html | 86 +- docs/doxygen/html/annotated.html | 194 +- .../html/classIRHitachiAc264-members.html | 112 + docs/doxygen/html/classIRHitachiAc264.html | 539 ++ .../html/classIRHitachiAc264__coll__graph.map | 6 + .../html/classIRHitachiAc264__coll__graph.md5 | 1 + .../html/classIRHitachiAc264__coll__graph.png | Bin 0 -> 8651 bytes .../classIRHitachiAc264__inherit__graph.map | 4 + .../classIRHitachiAc264__inherit__graph.md5 | 1 + .../classIRHitachiAc264__inherit__graph.png | Bin 0 -> 3283 bytes .../html/classIRHitachiAc296-members.html | 105 + docs/doxygen/html/classIRHitachiAc296.html | 894 +++ .../html/classIRHitachiAc296__coll__graph.map | 5 + .../html/classIRHitachiAc296__coll__graph.md5 | 1 + .../html/classIRHitachiAc296__coll__graph.png | Bin 0 -> 7280 bytes .../html/classIRHitachiAc344-members.html | 6 +- docs/doxygen/html/classIRHitachiAc344.html | 14 +- .../html/classIRHitachiAc424-members.html | 39 +- docs/doxygen/html/classIRHitachiAc424.html | 83 +- .../classIRHitachiAc424__inherit__graph.map | 5 +- .../classIRHitachiAc424__inherit__graph.md5 | 2 +- .../classIRHitachiAc424__inherit__graph.png | Bin 3162 -> 5012 bytes .../html/classIRKelvinatorAC-members.html | 29 +- docs/doxygen/html/classIRKelvinatorAC.html | 133 +- docs/doxygen/html/classIRLgAc-members.html | 78 +- docs/doxygen/html/classIRLgAc.html | 57 + docs/doxygen/html/classIRMideaAC-members.html | 42 +- docs/doxygen/html/classIRMideaAC.html | 369 +- docs/doxygen/html/classIRac-members.html | 4 +- docs/doxygen/html/classIRac.html | 169 +- docs/doxygen/html/classIRrecv-members.html | 12 +- docs/doxygen/html/classIRrecv.html | 139 +- docs/doxygen/html/classIRsend-members.html | 141 +- docs/doxygen/html/classIRsend.html | 167 +- docs/doxygen/html/classdecode__results.html | 32 +- docs/doxygen/html/classes.html | 187 +- docs/doxygen/html/defaults_8h_source.html | 888 +-- .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 4 +- docs/doxygen/html/files.html | 4 +- docs/doxygen/html/functions.html | 46 +- docs/doxygen/html/functions_b.html | 2 + docs/doxygen/html/functions_c.html | 8 +- docs/doxygen/html/functions_d.html | 6 + docs/doxygen/html/functions_f.html | 2 + docs/doxygen/html/functions_func.html | 3 + docs/doxygen/html/functions_func_b.html | 1 + docs/doxygen/html/functions_func_c.html | 6 +- docs/doxygen/html/functions_func_d.html | 6 + docs/doxygen/html/functions_func_g.html | 15 +- docs/doxygen/html/functions_func_h.html | 9 +- docs/doxygen/html/functions_func_i.html | 18 +- docs/doxygen/html/functions_func_m.html | 2 +- docs/doxygen/html/functions_func_o.html | 2 + docs/doxygen/html/functions_func_s.html | 32 +- docs/doxygen/html/functions_func_t.html | 10 +- docs/doxygen/html/functions_g.html | 15 +- docs/doxygen/html/functions_h.html | 10 +- docs/doxygen/html/functions_i.html | 19 +- docs/doxygen/html/functions_m.html | 4 +- docs/doxygen/html/functions_o.html | 12 + docs/doxygen/html/functions_p.html | 7 + docs/doxygen/html/functions_r.html | 2 + docs/doxygen/html/functions_rela.html | 3 + docs/doxygen/html/functions_s.html | 33 +- docs/doxygen/html/functions_t.html | 15 +- docs/doxygen/html/functions_v.html | 3 - docs/doxygen/html/functions_vars.html | 41 +- docs/doxygen/html/functions_vars_b.html | 1 + docs/doxygen/html/functions_vars_c.html | 2 +- docs/doxygen/html/functions_vars_f.html | 2 + docs/doxygen/html/functions_vars_h.html | 1 + docs/doxygen/html/functions_vars_m.html | 2 + docs/doxygen/html/functions_vars_o.html | 10 + docs/doxygen/html/functions_vars_p.html | 7 + docs/doxygen/html/functions_vars_r.html | 2 + docs/doxygen/html/functions_vars_s.html | 1 + docs/doxygen/html/functions_vars_t.html | 5 + docs/doxygen/html/functions_vars_v.html | 3 - docs/doxygen/html/globals_eval.html | 12 + docs/doxygen/html/globals_func_i.html | 2 +- docs/doxygen/html/globals_h.html | 6 + docs/doxygen/html/globals_i.html | 2 +- docs/doxygen/html/globals_k.html | 204 +- docs/doxygen/html/globals_l.html | 3 + docs/doxygen/html/globals_vars_k.html | 193 +- docs/doxygen/html/hierarchy.html | 196 +- docs/doxygen/html/inherit_graph_100.map | 2 +- docs/doxygen/html/inherit_graph_100.md5 | 2 +- docs/doxygen/html/inherit_graph_100.png | Bin 1732 -> 1929 bytes docs/doxygen/html/inherit_graph_101.map | 2 +- docs/doxygen/html/inherit_graph_101.md5 | 2 +- docs/doxygen/html/inherit_graph_101.png | Bin 1434 -> 1668 bytes docs/doxygen/html/inherit_graph_102.map | 2 +- docs/doxygen/html/inherit_graph_102.md5 | 2 +- docs/doxygen/html/inherit_graph_102.png | Bin 1936 -> 1833 bytes docs/doxygen/html/inherit_graph_103.map | 2 +- docs/doxygen/html/inherit_graph_103.md5 | 2 +- docs/doxygen/html/inherit_graph_103.png | Bin 1247 -> 1732 bytes docs/doxygen/html/inherit_graph_104.map | 2 +- docs/doxygen/html/inherit_graph_104.md5 | 2 +- docs/doxygen/html/inherit_graph_104.png | Bin 1790 -> 1434 bytes docs/doxygen/html/inherit_graph_105.map | 2 +- docs/doxygen/html/inherit_graph_105.md5 | 2 +- docs/doxygen/html/inherit_graph_105.png | Bin 1808 -> 1936 bytes docs/doxygen/html/inherit_graph_106.map | 2 +- docs/doxygen/html/inherit_graph_106.md5 | 2 +- docs/doxygen/html/inherit_graph_106.png | Bin 1449 -> 1247 bytes docs/doxygen/html/inherit_graph_107.map | 2 +- docs/doxygen/html/inherit_graph_107.md5 | 2 +- docs/doxygen/html/inherit_graph_107.png | Bin 1530 -> 1790 bytes docs/doxygen/html/inherit_graph_108.map | 2 +- docs/doxygen/html/inherit_graph_108.md5 | 2 +- docs/doxygen/html/inherit_graph_108.png | Bin 1307 -> 1808 bytes docs/doxygen/html/inherit_graph_109.map | 2 +- docs/doxygen/html/inherit_graph_109.md5 | 2 +- docs/doxygen/html/inherit_graph_109.png | Bin 1185 -> 1449 bytes docs/doxygen/html/inherit_graph_110.map | 2 +- docs/doxygen/html/inherit_graph_110.md5 | 2 +- docs/doxygen/html/inherit_graph_110.png | Bin 1443 -> 1530 bytes docs/doxygen/html/inherit_graph_111.map | 2 +- docs/doxygen/html/inherit_graph_111.md5 | 2 +- docs/doxygen/html/inherit_graph_111.png | Bin 1141 -> 1307 bytes docs/doxygen/html/inherit_graph_112.map | 2 +- docs/doxygen/html/inherit_graph_112.md5 | 2 +- docs/doxygen/html/inherit_graph_112.png | Bin 985 -> 1185 bytes docs/doxygen/html/inherit_graph_113.map | 2 +- docs/doxygen/html/inherit_graph_113.md5 | 2 +- docs/doxygen/html/inherit_graph_113.png | Bin 1518 -> 1443 bytes docs/doxygen/html/inherit_graph_114.map | 2 +- docs/doxygen/html/inherit_graph_114.md5 | 2 +- docs/doxygen/html/inherit_graph_114.png | Bin 1527 -> 1141 bytes docs/doxygen/html/inherit_graph_115.map | 2 +- docs/doxygen/html/inherit_graph_115.md5 | 2 +- docs/doxygen/html/inherit_graph_115.png | Bin 1573 -> 985 bytes docs/doxygen/html/inherit_graph_116.map | 2 +- docs/doxygen/html/inherit_graph_116.md5 | 2 +- docs/doxygen/html/inherit_graph_116.png | Bin 1083 -> 1518 bytes docs/doxygen/html/inherit_graph_117.map | 2 +- docs/doxygen/html/inherit_graph_117.md5 | 2 +- docs/doxygen/html/inherit_graph_117.png | Bin 1234 -> 1527 bytes docs/doxygen/html/inherit_graph_118.map | 2 +- docs/doxygen/html/inherit_graph_118.md5 | 2 +- docs/doxygen/html/inherit_graph_118.png | Bin 1366 -> 1573 bytes docs/doxygen/html/inherit_graph_119.map | 2 +- docs/doxygen/html/inherit_graph_119.md5 | 2 +- docs/doxygen/html/inherit_graph_119.png | Bin 1349 -> 1083 bytes docs/doxygen/html/inherit_graph_120.map | 2 +- docs/doxygen/html/inherit_graph_120.md5 | 2 +- docs/doxygen/html/inherit_graph_120.png | Bin 1411 -> 1234 bytes docs/doxygen/html/inherit_graph_121.map | 3 + docs/doxygen/html/inherit_graph_121.md5 | 1 + docs/doxygen/html/inherit_graph_121.png | Bin 0 -> 1366 bytes docs/doxygen/html/inherit_graph_122.map | 3 + docs/doxygen/html/inherit_graph_122.md5 | 1 + docs/doxygen/html/inherit_graph_122.png | Bin 0 -> 1349 bytes docs/doxygen/html/inherit_graph_123.map | 3 + docs/doxygen/html/inherit_graph_123.md5 | 1 + docs/doxygen/html/inherit_graph_123.png | Bin 0 -> 1411 bytes docs/doxygen/html/inherit_graph_27.map | 2 +- docs/doxygen/html/inherit_graph_27.md5 | 2 +- docs/doxygen/html/inherit_graph_27.png | Bin 1140 -> 1910 bytes docs/doxygen/html/inherit_graph_28.map | 2 +- docs/doxygen/html/inherit_graph_28.md5 | 2 +- docs/doxygen/html/inherit_graph_28.png | Bin 674 -> 1961 bytes docs/doxygen/html/inherit_graph_29.map | 2 +- docs/doxygen/html/inherit_graph_29.md5 | 2 +- docs/doxygen/html/inherit_graph_29.png | Bin 1116 -> 1140 bytes docs/doxygen/html/inherit_graph_30.map | 2 +- docs/doxygen/html/inherit_graph_30.md5 | 2 +- docs/doxygen/html/inherit_graph_30.png | Bin 1301 -> 674 bytes docs/doxygen/html/inherit_graph_31.map | 2 +- docs/doxygen/html/inherit_graph_31.md5 | 2 +- docs/doxygen/html/inherit_graph_31.png | Bin 1068 -> 1116 bytes docs/doxygen/html/inherit_graph_32.map | 2 +- docs/doxygen/html/inherit_graph_32.md5 | 2 +- docs/doxygen/html/inherit_graph_32.png | Bin 1161 -> 1301 bytes docs/doxygen/html/inherit_graph_33.map | 2 +- docs/doxygen/html/inherit_graph_33.md5 | 2 +- docs/doxygen/html/inherit_graph_33.png | Bin 1579 -> 1068 bytes docs/doxygen/html/inherit_graph_34.map | 2 +- docs/doxygen/html/inherit_graph_34.md5 | 2 +- docs/doxygen/html/inherit_graph_34.png | Bin 1141 -> 1161 bytes docs/doxygen/html/inherit_graph_35.map | 2 +- docs/doxygen/html/inherit_graph_35.md5 | 2 +- docs/doxygen/html/inherit_graph_35.png | Bin 1277 -> 1579 bytes docs/doxygen/html/inherit_graph_36.map | 2 +- docs/doxygen/html/inherit_graph_36.md5 | 2 +- docs/doxygen/html/inherit_graph_36.png | Bin 1330 -> 1141 bytes docs/doxygen/html/inherit_graph_37.map | 2 +- docs/doxygen/html/inherit_graph_37.md5 | 2 +- docs/doxygen/html/inherit_graph_37.png | Bin 1257 -> 1277 bytes docs/doxygen/html/inherit_graph_38.map | 2 +- docs/doxygen/html/inherit_graph_38.md5 | 2 +- docs/doxygen/html/inherit_graph_38.png | Bin 1371 -> 1330 bytes docs/doxygen/html/inherit_graph_39.map | 2 +- docs/doxygen/html/inherit_graph_39.md5 | 2 +- docs/doxygen/html/inherit_graph_39.png | Bin 1281 -> 1257 bytes docs/doxygen/html/inherit_graph_40.map | 2 +- docs/doxygen/html/inherit_graph_40.md5 | 2 +- docs/doxygen/html/inherit_graph_40.png | Bin 1088 -> 1371 bytes docs/doxygen/html/inherit_graph_41.map | 2 +- docs/doxygen/html/inherit_graph_41.md5 | 2 +- docs/doxygen/html/inherit_graph_41.png | Bin 1317 -> 1281 bytes docs/doxygen/html/inherit_graph_42.map | 2 +- docs/doxygen/html/inherit_graph_42.md5 | 2 +- docs/doxygen/html/inherit_graph_42.png | Bin 1237 -> 1088 bytes docs/doxygen/html/inherit_graph_43.map | 2 +- docs/doxygen/html/inherit_graph_43.md5 | 2 +- docs/doxygen/html/inherit_graph_43.png | Bin 1264 -> 1317 bytes docs/doxygen/html/inherit_graph_44.map | 2 +- docs/doxygen/html/inherit_graph_44.md5 | 2 +- docs/doxygen/html/inherit_graph_44.png | Bin 1482 -> 1237 bytes docs/doxygen/html/inherit_graph_45.map | 2 +- docs/doxygen/html/inherit_graph_45.md5 | 2 +- docs/doxygen/html/inherit_graph_45.png | Bin 1114 -> 1264 bytes docs/doxygen/html/inherit_graph_46.map | 2 +- docs/doxygen/html/inherit_graph_46.md5 | 2 +- docs/doxygen/html/inherit_graph_46.png | Bin 1334 -> 1482 bytes docs/doxygen/html/inherit_graph_47.map | 2 +- docs/doxygen/html/inherit_graph_47.md5 | 2 +- docs/doxygen/html/inherit_graph_47.png | Bin 1280 -> 1114 bytes docs/doxygen/html/inherit_graph_48.map | 2 +- docs/doxygen/html/inherit_graph_48.md5 | 2 +- docs/doxygen/html/inherit_graph_48.png | Bin 1904 -> 1334 bytes docs/doxygen/html/inherit_graph_49.map | 2 +- docs/doxygen/html/inherit_graph_49.md5 | 2 +- docs/doxygen/html/inherit_graph_49.png | Bin 1214 -> 1280 bytes docs/doxygen/html/inherit_graph_50.map | 2 +- docs/doxygen/html/inherit_graph_50.md5 | 2 +- docs/doxygen/html/inherit_graph_50.png | Bin 1300 -> 1904 bytes docs/doxygen/html/inherit_graph_51.map | 3 +- docs/doxygen/html/inherit_graph_51.md5 | 2 +- docs/doxygen/html/inherit_graph_51.png | Bin 2795 -> 1214 bytes docs/doxygen/html/inherit_graph_52.map | 2 +- docs/doxygen/html/inherit_graph_52.md5 | 2 +- docs/doxygen/html/inherit_graph_52.png | Bin 1089 -> 1300 bytes docs/doxygen/html/inherit_graph_53.map | 3 +- docs/doxygen/html/inherit_graph_53.md5 | 2 +- docs/doxygen/html/inherit_graph_53.png | Bin 1144 -> 2795 bytes docs/doxygen/html/inherit_graph_54.map | 2 +- docs/doxygen/html/inherit_graph_54.md5 | 2 +- docs/doxygen/html/inherit_graph_54.png | Bin 1273 -> 1089 bytes docs/doxygen/html/inherit_graph_55.map | 3 +- docs/doxygen/html/inherit_graph_55.md5 | 2 +- docs/doxygen/html/inherit_graph_55.png | Bin 2195 -> 1144 bytes docs/doxygen/html/inherit_graph_56.map | 2 +- docs/doxygen/html/inherit_graph_56.md5 | 2 +- docs/doxygen/html/inherit_graph_56.png | Bin 1269 -> 1596 bytes docs/doxygen/html/inherit_graph_57.map | 2 +- docs/doxygen/html/inherit_graph_57.md5 | 2 +- docs/doxygen/html/inherit_graph_57.png | Bin 1725 -> 1273 bytes docs/doxygen/html/inherit_graph_58.map | 4 +- docs/doxygen/html/inherit_graph_58.md5 | 2 +- docs/doxygen/html/inherit_graph_58.png | Bin 911 -> 3569 bytes docs/doxygen/html/inherit_graph_59.map | 2 +- docs/doxygen/html/inherit_graph_59.md5 | 2 +- docs/doxygen/html/inherit_graph_59.png | Bin 1369 -> 1269 bytes docs/doxygen/html/inherit_graph_60.map | 2 +- docs/doxygen/html/inherit_graph_60.md5 | 2 +- docs/doxygen/html/inherit_graph_60.png | Bin 1571 -> 1725 bytes docs/doxygen/html/inherit_graph_61.map | 2 +- docs/doxygen/html/inherit_graph_61.md5 | 2 +- docs/doxygen/html/inherit_graph_61.png | Bin 1340 -> 911 bytes docs/doxygen/html/inherit_graph_62.map | 2 +- docs/doxygen/html/inherit_graph_62.md5 | 2 +- docs/doxygen/html/inherit_graph_62.png | Bin 1573 -> 1369 bytes docs/doxygen/html/inherit_graph_63.map | 2 +- docs/doxygen/html/inherit_graph_63.md5 | 2 +- docs/doxygen/html/inherit_graph_63.png | Bin 1583 -> 1571 bytes docs/doxygen/html/inherit_graph_64.map | 2 +- docs/doxygen/html/inherit_graph_64.md5 | 2 +- docs/doxygen/html/inherit_graph_64.png | Bin 2616 -> 1340 bytes docs/doxygen/html/inherit_graph_65.map | 2 +- docs/doxygen/html/inherit_graph_65.md5 | 2 +- docs/doxygen/html/inherit_graph_65.png | Bin 2503 -> 1573 bytes docs/doxygen/html/inherit_graph_66.map | 2 +- docs/doxygen/html/inherit_graph_66.md5 | 2 +- docs/doxygen/html/inherit_graph_66.png | Bin 1440 -> 1583 bytes docs/doxygen/html/inherit_graph_67.map | 2 +- docs/doxygen/html/inherit_graph_67.md5 | 2 +- docs/doxygen/html/inherit_graph_67.png | Bin 1494 -> 2616 bytes docs/doxygen/html/inherit_graph_68.map | 2 +- docs/doxygen/html/inherit_graph_68.md5 | 2 +- docs/doxygen/html/inherit_graph_68.png | Bin 1882 -> 2503 bytes docs/doxygen/html/inherit_graph_69.map | 2 +- docs/doxygen/html/inherit_graph_69.md5 | 2 +- docs/doxygen/html/inherit_graph_69.png | Bin 1122 -> 1440 bytes docs/doxygen/html/inherit_graph_70.map | 2 +- docs/doxygen/html/inherit_graph_70.md5 | 2 +- docs/doxygen/html/inherit_graph_70.png | Bin 878 -> 1494 bytes docs/doxygen/html/inherit_graph_71.map | 2 +- docs/doxygen/html/inherit_graph_71.md5 | 2 +- docs/doxygen/html/inherit_graph_71.png | Bin 1123 -> 1882 bytes docs/doxygen/html/inherit_graph_72.map | 2 +- docs/doxygen/html/inherit_graph_72.md5 | 2 +- docs/doxygen/html/inherit_graph_72.png | Bin 1648 -> 1122 bytes docs/doxygen/html/inherit_graph_73.map | 2 +- docs/doxygen/html/inherit_graph_73.md5 | 2 +- docs/doxygen/html/inherit_graph_73.png | Bin 1443 -> 878 bytes docs/doxygen/html/inherit_graph_74.map | 2 +- docs/doxygen/html/inherit_graph_74.md5 | 2 +- docs/doxygen/html/inherit_graph_74.png | Bin 1654 -> 1123 bytes docs/doxygen/html/inherit_graph_75.map | 2 +- docs/doxygen/html/inherit_graph_75.md5 | 2 +- docs/doxygen/html/inherit_graph_75.png | Bin 925 -> 1648 bytes docs/doxygen/html/inherit_graph_76.map | 2 +- docs/doxygen/html/inherit_graph_76.md5 | 2 +- docs/doxygen/html/inherit_graph_76.png | Bin 1459 -> 1443 bytes docs/doxygen/html/inherit_graph_77.map | 2 +- docs/doxygen/html/inherit_graph_77.md5 | 2 +- docs/doxygen/html/inherit_graph_77.png | Bin 1014 -> 1654 bytes docs/doxygen/html/inherit_graph_78.map | 2 +- docs/doxygen/html/inherit_graph_78.md5 | 2 +- docs/doxygen/html/inherit_graph_78.png | Bin 1212 -> 925 bytes docs/doxygen/html/inherit_graph_79.map | 2 +- docs/doxygen/html/inherit_graph_79.md5 | 2 +- docs/doxygen/html/inherit_graph_79.png | Bin 1059 -> 1459 bytes docs/doxygen/html/inherit_graph_80.map | 2 +- docs/doxygen/html/inherit_graph_80.md5 | 2 +- docs/doxygen/html/inherit_graph_80.png | Bin 869 -> 1014 bytes docs/doxygen/html/inherit_graph_81.map | 2 +- docs/doxygen/html/inherit_graph_81.md5 | 2 +- docs/doxygen/html/inherit_graph_81.png | Bin 1428 -> 1212 bytes docs/doxygen/html/inherit_graph_82.map | 2 +- docs/doxygen/html/inherit_graph_82.md5 | 2 +- docs/doxygen/html/inherit_graph_82.png | Bin 1466 -> 1059 bytes docs/doxygen/html/inherit_graph_83.map | 2 +- docs/doxygen/html/inherit_graph_83.md5 | 2 +- docs/doxygen/html/inherit_graph_83.png | Bin 1490 -> 869 bytes docs/doxygen/html/inherit_graph_84.map | 2 +- docs/doxygen/html/inherit_graph_84.md5 | 2 +- docs/doxygen/html/inherit_graph_84.png | Bin 1328 -> 1428 bytes docs/doxygen/html/inherit_graph_85.map | 2 +- docs/doxygen/html/inherit_graph_85.md5 | 2 +- docs/doxygen/html/inherit_graph_85.png | Bin 1154 -> 1466 bytes docs/doxygen/html/inherit_graph_86.map | 2 +- docs/doxygen/html/inherit_graph_86.md5 | 2 +- docs/doxygen/html/inherit_graph_86.png | Bin 1310 -> 1490 bytes docs/doxygen/html/inherit_graph_87.map | 2 +- docs/doxygen/html/inherit_graph_87.md5 | 2 +- docs/doxygen/html/inherit_graph_87.png | Bin 1104 -> 1328 bytes docs/doxygen/html/inherit_graph_88.map | 2 +- docs/doxygen/html/inherit_graph_88.md5 | 2 +- docs/doxygen/html/inherit_graph_88.png | Bin 1480 -> 1154 bytes docs/doxygen/html/inherit_graph_89.map | 2 +- docs/doxygen/html/inherit_graph_89.md5 | 2 +- docs/doxygen/html/inherit_graph_89.png | Bin 1244 -> 1310 bytes docs/doxygen/html/inherit_graph_90.map | 2 +- docs/doxygen/html/inherit_graph_90.md5 | 2 +- docs/doxygen/html/inherit_graph_90.png | Bin 1518 -> 1104 bytes docs/doxygen/html/inherit_graph_91.map | 2 +- docs/doxygen/html/inherit_graph_91.md5 | 2 +- docs/doxygen/html/inherit_graph_91.png | Bin 1126 -> 1480 bytes docs/doxygen/html/inherit_graph_92.map | 2 +- docs/doxygen/html/inherit_graph_92.md5 | 2 +- docs/doxygen/html/inherit_graph_92.png | Bin 1310 -> 1244 bytes docs/doxygen/html/inherit_graph_93.map | 2 +- docs/doxygen/html/inherit_graph_93.md5 | 2 +- docs/doxygen/html/inherit_graph_93.png | Bin 1308 -> 1518 bytes docs/doxygen/html/inherit_graph_94.map | 2 +- docs/doxygen/html/inherit_graph_94.md5 | 2 +- docs/doxygen/html/inherit_graph_94.png | Bin 1446 -> 1126 bytes docs/doxygen/html/inherit_graph_95.map | 2 +- docs/doxygen/html/inherit_graph_95.md5 | 2 +- docs/doxygen/html/inherit_graph_95.png | Bin 2085 -> 1310 bytes docs/doxygen/html/inherit_graph_96.map | 2 +- docs/doxygen/html/inherit_graph_96.md5 | 2 +- docs/doxygen/html/inherit_graph_96.png | Bin 1693 -> 1308 bytes docs/doxygen/html/inherit_graph_97.map | 2 +- docs/doxygen/html/inherit_graph_97.md5 | 2 +- docs/doxygen/html/inherit_graph_97.png | Bin 1929 -> 1446 bytes docs/doxygen/html/inherit_graph_98.map | 2 +- docs/doxygen/html/inherit_graph_98.md5 | 2 +- docs/doxygen/html/inherit_graph_98.png | Bin 1668 -> 2085 bytes docs/doxygen/html/inherit_graph_99.map | 2 +- docs/doxygen/html/inherit_graph_99.md5 | 2 +- docs/doxygen/html/inherit_graph_99.png | Bin 1833 -> 1693 bytes docs/doxygen/html/inherits.html | 208 +- docs/doxygen/html/ir__Airton_8h_source.html | 6 +- docs/doxygen/html/ir__Airwell_8h_source.html | 6 +- docs/doxygen/html/ir__Amcor_8h_source.html | 8 +- docs/doxygen/html/ir__Argo_8h_source.html | 8 +- docs/doxygen/html/ir__Arris_8cpp.html | 2 +- docs/doxygen/html/ir__Carrier_8h_source.html | 6 +- docs/doxygen/html/ir__Coolix_8cpp.html | 22 +- docs/doxygen/html/ir__Coolix_8h_source.html | 6 +- docs/doxygen/html/ir__Corona_8h_source.html | 8 +- docs/doxygen/html/ir__Daikin_8h.html | 8 +- docs/doxygen/html/ir__Daikin_8h_source.html | 40 +- docs/doxygen/html/ir__Delonghi_8h_source.html | 6 +- docs/doxygen/html/ir__Denon_8cpp.html | 2 +- docs/doxygen/html/ir__Ecoclim_8h_source.html | 6 +- docs/doxygen/html/ir__Electra_8h_source.html | 395 +- docs/doxygen/html/ir__Fujitsu_8h_source.html | 10 +- docs/doxygen/html/ir__GICable_8cpp.html | 2 +- .../html/ir__Goodweather_8h_source.html | 6 +- docs/doxygen/html/ir__Gree_8h_source.html | 8 +- docs/doxygen/html/ir__Haier_8h_source.html | 16 +- docs/doxygen/html/ir__Hitachi_8cpp.html | 4 +- docs/doxygen/html/ir__Hitachi_8h.html | 592 +- docs/doxygen/html/ir__Hitachi_8h_source.html | 1676 +++--- docs/doxygen/html/ir__JVC_8cpp.html | 2 +- docs/doxygen/html/ir__Kelon_8cpp.html | 68 +- docs/doxygen/html/ir__Kelon_8h.html | 11 +- docs/doxygen/html/ir__Kelon_8h_source.html | 401 +- docs/doxygen/html/ir__Kelvinator_8h.html | 160 + .../html/ir__Kelvinator_8h_source.html | 396 +- docs/doxygen/html/ir__LG_8h.html | 16 + docs/doxygen/html/ir__LG_8h_source.html | 631 +-- .../doxygen/html/ir__Magiquest_8h_source.html | 4 +- docs/doxygen/html/ir__Midea_8h.html | 68 +- docs/doxygen/html/ir__Midea_8h_source.html | 698 +-- docs/doxygen/html/ir__Mirage_8h_source.html | 8 +- .../html/ir__MitsubishiHeavy_8h_source.html | 12 +- docs/doxygen/html/ir__Mitsubishi_8cpp.html | 4 +- .../html/ir__Mitsubishi_8h_source.html | 1061 ++-- docs/doxygen/html/ir__NEC_8h.html | 2 +- docs/doxygen/html/ir__NEC_8h_source.html | 2 +- docs/doxygen/html/ir__Neoclima_8h_source.html | 8 +- .../doxygen/html/ir__Panasonic_8h_source.html | 8 +- docs/doxygen/html/ir__Pioneer_8cpp.html | 4 +- docs/doxygen/html/ir__Rhoss_8h_source.html | 8 +- docs/doxygen/html/ir__Samsung_8cpp.html | 2 +- docs/doxygen/html/ir__Samsung_8h_source.html | 10 +- docs/doxygen/html/ir__Sanyo_8cpp.html | 2 +- docs/doxygen/html/ir__Sanyo_8h_source.html | 12 +- docs/doxygen/html/ir__Sharp_8cpp.html | 4 +- docs/doxygen/html/ir__Sharp_8h_source.html | 8 +- docs/doxygen/html/ir__Tcl_8h_source.html | 10 +- .../doxygen/html/ir__Technibel_8h_source.html | 6 +- docs/doxygen/html/ir__Teco_8h_source.html | 6 +- docs/doxygen/html/ir__Toshiba_8h_source.html | 10 +- .../doxygen/html/ir__Transcold_8h_source.html | 6 +- docs/doxygen/html/ir__Trotec_8h_source.html | 8 +- docs/doxygen/html/ir__Truma_8h_source.html | 6 +- docs/doxygen/html/ir__Vestel_8h_source.html | 6 +- docs/doxygen/html/ir__Voltas_8h_source.html | 8 +- .../doxygen/html/ir__Whirlpool_8h_source.html | 8 +- docs/doxygen/html/ir__Whynter_8cpp.html | 2 +- docs/doxygen/html/search/all_0.js | 221 +- docs/doxygen/html/search/all_1.js | 82 +- docs/doxygen/html/search/all_10.js | 64 +- docs/doxygen/html/search/all_11.js | 2 +- docs/doxygen/html/search/all_12.js | 60 +- docs/doxygen/html/search/all_13.js | 706 +-- docs/doxygen/html/search/all_14.js | 151 +- docs/doxygen/html/search/all_15.js | 30 +- docs/doxygen/html/search/all_16.js | 31 +- docs/doxygen/html/search/all_17.js | 20 +- docs/doxygen/html/search/all_18.js | 6 +- docs/doxygen/html/search/all_19.js | 4 +- docs/doxygen/html/search/all_1a.js | 8 +- docs/doxygen/html/search/all_1b.js | 2 +- docs/doxygen/html/search/all_2.js | 30 +- docs/doxygen/html/search/all_3.js | 140 +- docs/doxygen/html/search/all_4.js | 302 +- docs/doxygen/html/search/all_5.js | 88 +- docs/doxygen/html/search/all_6.js | 52 +- docs/doxygen/html/search/all_7.js | 301 +- docs/doxygen/html/search/all_8.js | 92 +- docs/doxygen/html/search/all_9.js | 485 +- docs/doxygen/html/search/all_a.js | 4 +- docs/doxygen/html/search/all_b.js | 4776 +++++++++-------- docs/doxygen/html/search/all_c.js | 47 +- docs/doxygen/html/search/all_d.js | 112 +- docs/doxygen/html/search/all_e.js | 18 +- docs/doxygen/html/search/all_f.js | 96 +- docs/doxygen/html/search/classes_0.js | 8 +- docs/doxygen/html/search/classes_1.js | 8 +- docs/doxygen/html/search/classes_10.js | 4 +- docs/doxygen/html/search/classes_11.js | 2 +- docs/doxygen/html/search/classes_2.js | 20 +- docs/doxygen/html/search/classes_3.js | 4 +- docs/doxygen/html/search/classes_4.js | 2 +- docs/doxygen/html/search/classes_5.js | 4 +- docs/doxygen/html/search/classes_6.js | 12 +- docs/doxygen/html/search/classes_7.js | 128 +- docs/doxygen/html/search/classes_8.js | 4 +- docs/doxygen/html/search/classes_9.js | 2 +- docs/doxygen/html/search/classes_a.js | 18 +- docs/doxygen/html/search/classes_b.js | 2 +- docs/doxygen/html/search/classes_c.js | 2 +- docs/doxygen/html/search/classes_d.js | 2 +- docs/doxygen/html/search/classes_e.js | 10 +- docs/doxygen/html/search/classes_f.js | 18 +- docs/doxygen/html/search/enums_0.js | 2 +- docs/doxygen/html/search/enums_1.js | 4 +- docs/doxygen/html/search/enums_2.js | 2 +- docs/doxygen/html/search/enums_3.js | 4 +- docs/doxygen/html/search/enums_4.js | 2 +- docs/doxygen/html/search/enums_5.js | 2 +- docs/doxygen/html/search/enums_6.js | 2 +- docs/doxygen/html/search/enums_7.js | 2 +- docs/doxygen/html/search/enums_8.js | 6 +- docs/doxygen/html/search/enums_9.js | 2 +- docs/doxygen/html/search/enums_a.js | 2 +- docs/doxygen/html/search/enums_b.js | 2 +- docs/doxygen/html/search/enumvalues_0.js | 36 +- docs/doxygen/html/search/enumvalues_1.js | 2 +- docs/doxygen/html/search/enumvalues_10.js | 26 +- docs/doxygen/html/search/enumvalues_11.js | 20 +- docs/doxygen/html/search/enumvalues_12.js | 4 +- docs/doxygen/html/search/enumvalues_13.js | 8 +- docs/doxygen/html/search/enumvalues_14.js | 4 +- docs/doxygen/html/search/enumvalues_15.js | 2 +- docs/doxygen/html/search/enumvalues_16.js | 4 +- docs/doxygen/html/search/enumvalues_17.js | 2 +- docs/doxygen/html/search/enumvalues_2.js | 12 +- docs/doxygen/html/search/enumvalues_3.js | 28 +- docs/doxygen/html/search/enumvalues_4.js | 8 +- docs/doxygen/html/search/enumvalues_5.js | 2 +- docs/doxygen/html/search/enumvalues_6.js | 12 +- docs/doxygen/html/search/enumvalues_7.js | 20 +- docs/doxygen/html/search/enumvalues_8.js | 2 +- docs/doxygen/html/search/enumvalues_9.js | 2 +- docs/doxygen/html/search/enumvalues_a.js | 75 +- docs/doxygen/html/search/enumvalues_b.js | 11 +- docs/doxygen/html/search/enumvalues_c.js | 30 +- docs/doxygen/html/search/enumvalues_d.js | 8 +- docs/doxygen/html/search/enumvalues_e.js | 10 +- docs/doxygen/html/search/enumvalues_f.js | 16 +- docs/doxygen/html/search/files_0.js | 8 +- docs/doxygen/html/search/files_1.js | 10 +- docs/doxygen/html/search/files_2.js | 2 +- docs/doxygen/html/search/files_3.js | 256 +- docs/doxygen/html/search/files_4.js | 2 +- docs/doxygen/html/search/files_5.js | 4 +- docs/doxygen/html/search/files_6.js | 2 +- docs/doxygen/html/search/files_7.js | 2 +- docs/doxygen/html/search/functions_0.js | 53 +- docs/doxygen/html/search/functions_1.js | 38 +- docs/doxygen/html/search/functions_10.js | 22 +- docs/doxygen/html/search/functions_11.js | 542 +- docs/doxygen/html/search/functions_12.js | 54 +- docs/doxygen/html/search/functions_13.js | 12 +- docs/doxygen/html/search/functions_14.js | 8 +- docs/doxygen/html/search/functions_15.js | 2 +- docs/doxygen/html/search/functions_16.js | 2 +- docs/doxygen/html/search/functions_17.js | 2 +- docs/doxygen/html/search/functions_2.js | 8 +- docs/doxygen/html/search/functions_3.js | 74 +- docs/doxygen/html/search/functions_4.js | 230 +- docs/doxygen/html/search/functions_5.js | 52 +- docs/doxygen/html/search/functions_6.js | 12 +- docs/doxygen/html/search/functions_7.js | 287 +- docs/doxygen/html/search/functions_8.js | 28 +- docs/doxygen/html/search/functions_9.js | 189 +- docs/doxygen/html/search/functions_a.js | 4 +- docs/doxygen/html/search/functions_b.js | 8 +- docs/doxygen/html/search/functions_c.js | 50 +- docs/doxygen/html/search/functions_d.js | 2 +- docs/doxygen/html/search/functions_e.js | 6 +- docs/doxygen/html/search/functions_f.js | 4 +- docs/doxygen/html/search/namespaces_0.js | 2 +- docs/doxygen/html/search/namespaces_1.js | 6 +- docs/doxygen/html/search/namespaces_2.js | 2 +- docs/doxygen/html/search/pages_0.js | 2 +- docs/doxygen/html/search/pages_1.js | 4 +- docs/doxygen/html/search/pages_2.js | 2 +- docs/doxygen/html/search/related_0.js | 5 +- docs/doxygen/html/search/typedefs_0.js | 2 +- docs/doxygen/html/search/typedefs_1.js | 2 +- docs/doxygen/html/search/variables_0.js | 166 +- docs/doxygen/html/search/variables_1.js | 8 +- docs/doxygen/html/search/variables_10.js | 2 +- docs/doxygen/html/search/variables_11.js | 20 +- docs/doxygen/html/search/variables_12.js | 122 +- docs/doxygen/html/search/variables_13.js | 65 +- docs/doxygen/html/search/variables_14.js | 16 +- docs/doxygen/html/search/variables_15.js | 11 +- docs/doxygen/html/search/variables_16.js | 10 +- docs/doxygen/html/search/variables_17.js | 2 +- docs/doxygen/html/search/variables_18.js | 4 +- docs/doxygen/html/search/variables_2.js | 20 +- docs/doxygen/html/search/variables_3.js | 50 +- docs/doxygen/html/search/variables_4.js | 28 +- docs/doxygen/html/search/variables_5.js | 16 +- docs/doxygen/html/search/variables_6.js | 30 +- docs/doxygen/html/search/variables_7.js | 26 +- docs/doxygen/html/search/variables_8.js | 28 +- docs/doxygen/html/search/variables_9.js | 2 +- docs/doxygen/html/search/variables_a.js | 4697 ++++++++-------- docs/doxygen/html/search/variables_b.js | 26 +- docs/doxygen/html/search/variables_c.js | 24 +- docs/doxygen/html/search/variables_d.js | 8 +- docs/doxygen/html/search/variables_e.js | 88 +- docs/doxygen/html/search/variables_f.js | 46 +- .../doxygen/html/structstdAc_1_1state__t.html | 72 +- .../html/unionHitachi424Protocol-members.html | 2 + .../doxygen/html/unionHitachi424Protocol.html | 46 +- .../unionHitachiAC264Protocol-members.html | 95 + .../html/unionHitachiAC264Protocol.html | 370 ++ .../unionHitachiAC296Protocol-members.html | 111 + .../html/unionHitachiAC296Protocol.html | 618 +++ docs/doxygen/html/unionKelonProtocol.html | 74 +- .../html/unionKelvinatorProtocol-members.html | 47 +- .../doxygen/html/unionKelvinatorProtocol.html | 186 +- docs/doxygen/html/unionLGProtocol.html | 38 +- docs/doxygen/html/unionMideaProtocol.html | 86 +- docs/doxygen/html/unionMirage120Protocol.html | 296 +- .../html/unionMitsubishi112Protocol.html | 74 +- .../html/unionMitsubishi136Protocol.html | 54 +- .../html/unionMitsubishi144Protocol.html | 158 +- .../html/unionMitsubishi152Protocol.html | 114 +- .../html/unionMitsubishi88Protocol.html | 70 +- docs/doxygen/html/unionNeoclimaProtocol.html | 130 +- .../html/unionPanasonicAc32Protocol.html | 52 +- docs/doxygen/html/unionRhossProtocol.html | 78 +- docs/doxygen/html/unionSamsungProtocol.html | 316 +- docs/doxygen/html/unionSanyoAc88Protocol.html | 98 +- docs/doxygen/html/unionSanyoProtocol.html | 100 +- docs/doxygen/html/unionSharpProtocol.html | 114 +- docs/doxygen/html/unionTcl112Protocol.html | 158 +- docs/doxygen/html/unionTechnibelProtocol.html | 82 +- docs/doxygen/html/unionTecoProtocol.html | 74 +- docs/doxygen/html/unionToshibaProtocol.html | 88 +- docs/doxygen/html/unionTranscoldProtocol.html | 34 +- .../doxygen/html/unionTrotec3550Protocol.html | 86 +- docs/doxygen/html/unionTrotecProtocol.html | 78 +- docs/doxygen/html/unionTrumaProtocol.html | 58 +- docs/doxygen/html/unionVestelProtocol.html | 132 +- docs/doxygen/html/unionVoltasProtocol.html | 126 +- docs/doxygen/html/unionWhirlpoolProtocol.html | 174 +- docs/doxygen/html/unionmagiquest-members.html | 2 +- docs/doxygen/html/unionmagiquest.html | 26 +- keywords.txt | 93 +- library.json | 2 +- library.properties | 2 +- src/IRremoteESP8266.h | 2 +- tools/mkkeywords | 4 +- 645 files changed, 24171 insertions(+), 17833 deletions(-) create mode 100644 docs/doxygen/html/classIRHitachiAc264-members.html create mode 100644 docs/doxygen/html/classIRHitachiAc264.html create mode 100644 docs/doxygen/html/classIRHitachiAc264__coll__graph.map create mode 100644 docs/doxygen/html/classIRHitachiAc264__coll__graph.md5 create mode 100644 docs/doxygen/html/classIRHitachiAc264__coll__graph.png create mode 100644 docs/doxygen/html/classIRHitachiAc264__inherit__graph.map create mode 100644 docs/doxygen/html/classIRHitachiAc264__inherit__graph.md5 create mode 100644 docs/doxygen/html/classIRHitachiAc264__inherit__graph.png create mode 100644 docs/doxygen/html/classIRHitachiAc296-members.html create mode 100644 docs/doxygen/html/classIRHitachiAc296.html create mode 100644 docs/doxygen/html/classIRHitachiAc296__coll__graph.map create mode 100644 docs/doxygen/html/classIRHitachiAc296__coll__graph.md5 create mode 100644 docs/doxygen/html/classIRHitachiAc296__coll__graph.png create mode 100644 docs/doxygen/html/inherit_graph_121.map create mode 100644 docs/doxygen/html/inherit_graph_121.md5 create mode 100644 docs/doxygen/html/inherit_graph_121.png create mode 100644 docs/doxygen/html/inherit_graph_122.map create mode 100644 docs/doxygen/html/inherit_graph_122.md5 create mode 100644 docs/doxygen/html/inherit_graph_122.png create mode 100644 docs/doxygen/html/inherit_graph_123.map create mode 100644 docs/doxygen/html/inherit_graph_123.md5 create mode 100644 docs/doxygen/html/inherit_graph_123.png create mode 100644 docs/doxygen/html/unionHitachiAC264Protocol-members.html create mode 100644 docs/doxygen/html/unionHitachiAC264Protocol.html create mode 100644 docs/doxygen/html/unionHitachiAC296Protocol-members.html create mode 100644 docs/doxygen/html/unionHitachiAC296Protocol.html diff --git a/README.md b/README.md index f392c5529..e9d16eddd 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ This library enables you to **send _and_ receive** infra-red signals on an [ESP8266](https://github.com/esp8266/Arduino) or an [ESP32](https://github.com/espressif/arduino-esp32) using the [Arduino framework](https://www.arduino.cc/) using common 940nm IR LEDs and common IR receiver modules. e.g. TSOP{17,22,24,36,38,44,48}* demodulators etc. -## v2.8.1 Now Available -Version 2.8.1 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. +## v2.8.2 Now Available +Version 2.8.2 of the library is now [available](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). You can view the [Release Notes](ReleaseNotes.md) for all the significant changes. #### Upgrading from pre-v2.0 Usage of the library has been slightly changed in v2.0. You will need to change your usage to work with v2.0 and beyond. You can read more about the changes required on our [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/README_de.md b/README_de.md index 884628149..50dbab2cb 100644 --- a/README_de.md +++ b/README_de.md @@ -11,8 +11,8 @@ Diese Programmbibliothek ermöglicht das **Senden _und_ Empfangen** von Infrarotsignalen mit [ESP8266](https://github.com/esp8266/Arduino)- und [ESP32](https://github.com/espressif/arduino-esp32)-Mikrocontrollern mithilfe des [Arduino-Frameworks](https://www.arduino.cc/) und handelsüblichen 940nm Infrarot-LEDs undIR-Empfängermodulen, wie zum Beispiel TSOP{17,22,24,36,38,44,48}*-Demodulatoren. -## v2.8.1 jetzt verfügbar -Version 2.8.1 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen. +## v2.8.2 jetzt verfügbar +Version 2.8.2 der Bibliothek ist nun [verfügbar](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Die [Versionshinweise](ReleaseNotes.md) enthalten alle wichtigen Neuerungen. #### Hinweis für Nutzer von Versionen vor v2.0 Die Benutzung der Bibliothek hat sich mit Version 2.0 leicht geändert. Einige Anpassungen im aufrufenden Code werden nötig sein, um mit Version ab 2.0 korrekt zu funktionieren. Mehr zu den Anpassungen finden sich auf unserer [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0)-Seite. diff --git a/README_fr.md b/README_fr.md index 3f1a93048..71f4d4abc 100644 --- a/README_fr.md +++ b/README_fr.md @@ -10,8 +10,8 @@ Cette librairie vous permetra de **recevoir et d'envoyer des signaux** infrarouge sur le protocole [ESP8266](https://github.com/esp8266/Arduino) ou sur le protocole [ESP32](https://github.com/espressif/arduino-esp32) en utilisant le [Arduino framework](https://www.arduino.cc/) qui utilise la norme 940nm IR LEDs et le module basique de reception d'onde IR. Exemple : TSOP{17,22,24,36,38,44,48}* modules etc. -## v2.8.1 disponible -Version 2.8.1 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. +## v2.8.2 disponible +Version 2.8.2 de la libraire est maintenant [disponible](https://github.com/crankyoldgit/IRremoteESP8266/releases/latest). Vous pouvez voir le [Release Notes](ReleaseNotes.md) pour tous les changements importants. #### mise à jour depuis pre-v2.0 L'utilisation de la librairie à un peu changer depuis la version in v2.0. Si vous voulez l'utiliser vous devrez changer votre utilisation aussi. Vous pouvez vous renseigner sur les précondition d'utilisation ici : [Upgrade to v2.0](https://github.com/crankyoldgit/IRremoteESP8266/wiki/Upgrading-to-v2.0) page. diff --git a/ReleaseNotes.md b/ReleaseNotes.md index 9c8d7df98..5fd04c726 100644 --- a/ReleaseNotes.md +++ b/ReleaseNotes.md @@ -1,5 +1,38 @@ # Release Notes +## _v2.8.2 (20220314)_ + +**[Bug Fixes]** +- ESP32-C3: Fix reboot/crashes on ESP32-C3s when receiving. (#1768 #1751) + +**[Features]** +- HITACHI_AC296: Add `IRac` class support & tests. (#1776 #1758 #1757) +- Support for Hitachi RAS-70YHA3 (remote RAR-3U3) (#1758 #1757) +- LG: Add Swing Toggle support for Model `LG6711A20083V` (#1771 #1770) +- IRMQTTServer: add `MQTT_SERVER_AUTODETECT_ENABLE` via mqtt mDNS (#1769) +- Experimental basic support for Kelon 168 bit / 21 byte protocol. (#1747 #1745 #1744) +- MitsubishiAC: Tweak repeat gap timing. (#1760 #1759) +- Gree YAP0F8 (Detected as Kelvinator) vertical position set support (#1756) +- Make KELON (48 bit) protocol decoding stricter. (#1746 #1744) +- IRMQTTServer V1.6.1 (#1740 #1739 #1729) +- HITACHI_AC264: Add minimal detailed support. (#1735 #1729) +- LG2: Improve Light toggle msg handling. (#1738 #1737) +- MIDEA: Add support for Quiet, Clean & Freeze Protect controls. (#1734 #1733) +- Add basic support for HITACHI_AC264 264bit protocol. (#1730 #1729) +- ESP32-C3: Work around for some C3 specific compiler issues again. (#1732 #1695) + +**[Misc]** +- MIDEA: Update supported devices (#1774 #1773 #1716) +- Update devices supported by ELECTRA_AC (#1766 #1765) +- Improve documentation for `encodePioneer()` (#1761 #1749) +- Update (un)supported DAIKIN128 devices. (#1752) +- Refactor `decodeCOOLIX()` code & add another test case. (#1750 #1748) +- Simplify code based on state_t being initialised by default. (#1736 #1699) +- Add comments to help Teknopoint users. (#1731 #1728) +- Fix library version string calculation. (#1727 #1725) +- Confirm we can reproduce `TurnOnFujitsuAC.ino` via IRac/IRMQTTServer. (#1726 #1701) + + ## _v2.8.1 (20220101)_ **[Bug Fixes]** diff --git a/SupportedProtocols.md b/SupportedProtocols.md index 0b6fb06c1..509e7cd50 100644 --- a/SupportedProtocols.md +++ b/SupportedProtocols.md @@ -1,6 +1,6 @@ + Last generated: Mon 14 Mar 2022 06:52:21 +0000 ---> # IR Protocols supported by this library | Protocol | Brand | Model | A/C Model | Detailed A/C Support | @@ -22,12 +22,13 @@ | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Tokio](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | AATOEMF17-12CHR1SW split-type RG51\|50/BGE Remote | | Yes | | [Coolix](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Coolix.h)** | RAS-4M27YAV-E A/C
RAS-M10YKV-E A/C
RAS-M13YKV-E A/C
WH-E1YE remote | | Yes | | [Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.cpp) | **[Corona](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Corona.h)** | AR-01 remote
CSH-N2211 A/C
CSH-N2511 A/C
CSH-N2811 A/C
CSH-N4011 A/C | | Yes | -| [Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.cpp) | **[Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.h)** | 17 Series A/C (DAIKIN128)
ARC423A5 remote (DAIKIN160)
ARC433** remote (DAIKIN)
ARC433B69 remote (DAIKIN216)
ARC466A33 remote (DAIKIN)
ARC477A1 remote (DAIKIN2)
ARC480A5 remote (DAIKIN152)
ARC484A4 remote (DAIKIN216)
BRC4C151 remote (DAIKIN176)
BRC4C153 remote (DAIKIN176)
BRC52B63 remote (DAIKIN128)
DGS01 remote (DAIKIN64)
FFN-C/FCN-F Series A/C (DAIKIN64)
FFQ35B8V1B A/C (DAIKIN176)
FTE12HV2S A/C
FTQ60TV16U2 A/C (DAIKIN216)
FTWX35AXV1 A/C (DAIKIN64)
FTXB09AXVJU A/C (DAIKIN128)
FTXB12AXVJU A/C (DAIKIN128)
FTXM-M A/C (DAIKIN)
FTXZ25NV1B A/C (DAIKIN2)
FTXZ35NV1B A/C (DAIKIN2)
FTXZ50NV1B A/C (DAIKIN2)
M Series A/C (DAIKIN) | | Yes | +| [Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.cpp) | **[Daikin](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Daikin.h)** | 17 Series FTXB09AXVJU A/C (DAIKIN128)
17 Series FTXB12AXVJU A/C (DAIKIN128)
17 Series FTXB24AXVJU A/C (NOT SUPPORTED)
ARC423A5 remote (DAIKIN160)
ARC433** remote (DAIKIN)
ARC433B69 remote (DAIKIN216)
ARC466A33 remote (DAIKIN)
ARC477A1 remote (DAIKIN2)
ARC480A5 remote (DAIKIN152)
ARC484A4 remote (DAIKIN216)
BRC4C151 remote (DAIKIN176)
BRC4C153 remote (DAIKIN176)
BRC52B63 remote (DAIKIN128)
DGS01 remote (DAIKIN64)
FFN-C/FCN-F Series A/C (DAIKIN64)
FFQ35B8V1B A/C (DAIKIN176)
FTE12HV2S A/C
FTQ60TV16U2 A/C (DAIKIN216)
FTWX35AXV1 A/C (DAIKIN64)
FTXM-M A/C (DAIKIN)
FTXZ25NV1B A/C (DAIKIN2)
FTXZ35NV1B A/C (DAIKIN2)
FTXZ50NV1B A/C (DAIKIN2)
M Series A/C (DAIKIN) | | Yes | | [Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.cpp) | **[Delonghi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Delonghi.h)** | PAC A95 | | Yes | | [Denon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Denon.cpp) | **Denon** | AVR-3801 A/V Receiver (probably) | | - | | [Dish](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Dish.cpp) | **DISH NETWORK** | echostar 301 | | - | | [Doshisha](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Doshisha.cpp) | **Doshisha** | CZ-S32D LED Light
CZ-S38D LED Light
CZ-S50D LED Light
RCZ01 remote | | - | | [Ecoclim](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Ecoclim.cpp) | **[EcoClim](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Ecoclim.h)** | HYSFR-P348 remote
ZC200DPO A/C | | Yes | +| [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[AEG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | Chillflex Pro AXP26U338CW A/C | | Yes | | [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[AUX](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | KFR-35GW/BpNFW=3 A/C
YKR-T/011 remote | | Yes | | [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[Centek](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | SCT-65Q09 A/C
YKR-P/002E remote | | Yes | | [Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.cpp) | **[Electra](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Electra.h)** | Classic INV 17 / AXW12DCS A/C
YKR-M/003E remote | | Yes | @@ -52,15 +53,17 @@ | [Haier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.cpp) | **[Daichi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.h)** | D-H A/C (HAIER_AC176) | | Yes | | [Haier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.cpp) | **[Haier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.h)** | HSU-09HMC203 A/C (HAIER_AC_YRW02)
HSU07-HEA03 remote (HAIER_AC)
V9014557 M47 8D remote (HAIER_AC176)
YR-W02 remote (HAIER_AC_YRW02) | | Yes | | [Haier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.cpp) | **[Mabe](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Haier.h)** | MMI18HDBWCA6MI8 A/C (HAIER_AC176)
V12843 HJ200223 remote (HAIER_AC176) | | Yes | -| [Hitachi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Hitachi.cpp) | **[Hitachi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Hitachi.h)** | KAZE-312KSDP A/C (HITACHI_AC1)
LT0541-HTA remote (HITACHI_AC1)
PC-LH3B (HITACHI_AC3)
R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)
RAR-8P2 remote (HITACHI_AC424)
RAS-22NK A/C (HITACHI_AC344)
RAS-35THA6 remote
RAS-AJ25H A/C (HITACHI_AC424)
RF11T1 remote (HITACHI_AC344)
Series VI A/C (Circa 2007) (HITACHI_AC1) | | Yes | +| [Hitachi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Hitachi.cpp) | **[Hitachi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Hitachi.h)** | KAZE-312KSDP A/C (HITACHI_AC1)
LT0541-HTA remote (HITACHI_AC1)
PC-LH3B (HITACHI_AC3)
R-LT0541-HTA/Y.K.1.1-1 V2.3 remote (HITACHI_AC1)
RAK-25NH5 A/C (HITACHI_AC264)
RAR-2P2 remote (HITACHI_AC264)
RAR-3U3 remote (HITACHI_AC296)
RAR-8P2 remote (HITACHI_AC424)
RAS-22NK A/C (HITACHI_AC344)
RAS-35THA6 remote
RAS-70YHA3 A/C (HITACHI_AC296)
RAS-AJ25H A/C (HITACHI_AC424)
RF11T1 remote (HITACHI_AC344)
Series VI A/C (Circa 2007) (HITACHI_AC1) | | Yes | | [Inax](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Inax.cpp) | **Lixil** | Inax DT-BA283 Toilet | | - | | [JVC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_JVC.cpp) | **JVC** | PTU94023B remote | | - | -| [Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.cpp) | **[Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.h)** | ON/OFF 9000-12000 | | Yes | +| [Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.cpp) | **[Hisense](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.h)** | AST-09UW4RVETG00A A/C (KELON168) | | Yes | +| [Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.cpp) | **[Kelon](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelon.h)** | AST-09UW4RVETG00A A/C (KELON168)
DG11R2-01 remote (KELON168)
ON/OFF 9000-12000 (KELON) | | Yes | +| [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Gree](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAP0F8 remote | | Yes | | [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Green](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | YAPOF3 remote | | Yes | | [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | KSV26CRC A/C
KSV26HRC A/C
KSV35CRC A/C
KSV35HRC A/C
KSV53HRC A/C
KSV62HRC A/C
KSV70CRC A/C
KSV70HRC A/C
KSV80HRC A/C
YALIF Remote | | Yes | | [Kelvinator](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.cpp) | **[Sharp](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Kelvinator.h)** | A5VEY A/C
YB1FA remote | | Yes | -| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[General Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711AR2853M A/C Remote (LG)
AG1BH09AW101 Split A/C (LG) | | Yes | -| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711A20083V remote (LG)
A4UW30GFA2 A/C (LG2 - AKB74955603 & AKB73757604)
AKB73315611 remote (LG2 - AKB74955603)
AKB73757604 remote (LG2 - AKB73757604)
AKB74395308 remote (LG2)
AKB74955603 remote (LG2 - AKB74955603)
AKB75215403 remote (LG2)
AMNW09GSJA0 A/C (LG2 - AKB74955603)
AMNW24GTPA1 A/C (LG2 - AKB73757604)
MS05SQ NW0 A/C (LG2 - AKB74955603)
S4-W12JA3AA A/C (LG2) | | Yes | +| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[General Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711AR2853M Remote (LG - GE6711AR2853M)
AG1BH09AW101 A/C (LG - GE6711AR2853M) | | Yes | +| [LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.cpp) | **[LG](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_LG.h)** | 6711A20083V remote (LG - LG6711A20083V)
A4UW30GFA2 A/C (LG2 - AKB74955603 & AKB73757604)
AKB73315611 remote (LG2 - AKB74955603)
AKB73757604 remote (LG2 - AKB73757604)
AKB74395308 remote (LG2)
AKB74955603 remote (LG2 - AKB74955603)
AKB75215403 remote (LG2)
AMNW09GSJA0 A/C (LG2 - AKB74955603)
AMNW24GTPA1 A/C (LG2 - AKB73757604)
MS05SQ NW0 A/C (LG2 - AKB74955603)
S4-W12JA3AA A/C (LG2)
TS-H122ERM1 remote (LG - LG6711A20083V) | | Yes | | [Lasertag](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lasertag.cpp) | **Lasertag** | Phaser emitters | | - | | [Lego](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lego.cpp) | **LEGO Power Functions** | IR Receiver | | - | | [Lutron](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Lutron.cpp) | **Lutron** | MIR-ITFS remote
MIR-ITFS-F remote
MIR-ITFS-LF remote
SP-HT remote | | - | @@ -71,6 +74,7 @@ | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Danby](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | DAC080BGUWDB (MIDEA)
DAC100BGUWDB (MIDEA)
DAC120BGUWDB (MIDEA)
R09C/BCGE remote (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Kaysun](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | Casual CF A/C (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Keystone](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57H4(B)BGEF remote (MIDEA) | | Yes | +| [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Lennox](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | M22A indoor split A/C (MIDEA)
M33A indoor split A/C (MIDEA)
M33B indoor split A/C (MIDEA)
MCFA indoor split A/C (MIDEA)
MCFB indoor split A/C (MIDEA)
MMDA indoor split A/C (MIDEA)
MMDB indoor split A/C (MIDEA)
MWMA indoor split A/C (MIDEA)
MWMA009S4-3P A/C (MIDEA)
MWMA012S4-3P A/C (MIDEA)
MWMB indoor split A/C (MIDEA)
RG57A6/BGEFU1 remote (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | FS40-7AR Stand Fan (MIDEA24) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[MrCool](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG57A6/BGEFU1 remote (MIDEA) | | Yes | | [Midea](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.cpp) | **[Pioneer System](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Midea.h)** | RG66B6(B)/BGEFU1 remote (MIDEA)
RUBO18GMFILCAD A/C (18K BTU) (MIDEA)
RYBO12GMFILCAD A/C (12K BTU) (MIDEA)
UB018GMFILCFHD A/C (12K BTU) (MIDEA)
WS012GMFI22HLD A/C (12K BTU) (MIDEA)
WS018GMFI22HLD A/C (12K BTU) (MIDEA) | | Yes | @@ -80,7 +84,7 @@ | [Mirage](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mirage.cpp) | **[Mirage](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mirage.h)** | VLU series A/C | KKG29AC1
KKG9AC1 | Yes | | [Mirage](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mirage.cpp) | **[Tronitechnik](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mirage.h)** | KKG29A-C1 remote
Reykir 9000 A/C | KKG29AC1
KKG9AC1 | Yes | | [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | HC3000 Projector (MITSUBISHI2)
KM14A 0179213 remote
MS-GK24VA A/C
TV (MITSUBISHI) | | Yes | -| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote (MITSUBISHI136)
KPOA remote (MITSUBISHI112)
MLZ-RX5017AS A/C (MITSUBISHI_AC)
MSH-A24WV A/C (MITSUBISHI112)
MSZ-FHnnVE A/C (MITSUBISHI_AC)
MSZ-GV2519 A/C (MITSUBISHI_AC)
MSZ-SF25VE3 A/C (MITSUBISHI_AC)
MSZ-ZW4017S A/C (MITSUBISHI_AC)
MUH-A24WV A/C (MITSUBISHI112)
PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
RH151/M21ED6426 remote (MITSUBISHI_AC)
SG153/M21EDF426 remote (MITSUBISHI_AC)
SG15D remote (MITSUBISHI_AC) | | Yes | +| [Mitsubishi](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.cpp) | **[Mitsubishi Electric](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Mitsubishi.h)** | 001CP T7WE10714 remote (MITSUBISHI136)
KPOA remote (MITSUBISHI112)
MLZ-RX5017AS A/C (MITSUBISHI_AC)
MSH-A24WV A/C (MITSUBISHI112)
MSZ-FHnnVE A/C (MITSUBISHI_AC)
MSZ-GV2519 A/C (MITSUBISHI_AC)
MSZ-SF25VE3 A/C (MITSUBISHI_AC)
MSZ-ZW4017S A/C (MITSUBISHI_AC)
MUH-A24WV A/C (MITSUBISHI112)
PEAD-RP71JAA Ducted A/C (MITSUBISHI136)
RH151 remote (MITSUBISHI_AC)
RH151/M21ED6426 remote (MITSUBISHI_AC)
SG153/M21EDF426 remote (MITSUBISHI_AC)
SG15D remote (MITSUBISHI_AC) | | Yes | | [MitsubishiHeavy](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.cpp) | **[Mitsubishi Heavy Industries](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_MitsubishiHeavy.h)** | RKX502A001C remote (88 bit)
RLA502A700B remote (152 bit)
SRKxxZJ-S A/C (88 bit)
SRKxxZM-S A/C (152 bit)
SRKxxZMXA-S A/C (152 bit) | | Yes | | [Multibrackets](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Multibrackets.cpp) | **Multibrackets** | Motorized Swing mount large - 4500 | | - | | [NEC](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.cpp) | **[Aloka](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_NEC.h)** | SleepyLights LED Lamp | | - | @@ -114,7 +118,7 @@ | [Tcl](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.cpp) | **[Teknopoint](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Tcl.h)** | Allegro SSA-09H A/C (GZ055BE1)
GZ-055B-E1 remote (GZ055BE1) | GZ055BE1
TAC09CHSD | Yes | | [Technibel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Technibel.cpp) | **[Technibel](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Technibel.h)** | IRO PLUS | | Yes | | [Teco](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.cpp) | **[Alaska](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teco.h)** | SAC9010QC A/C
SAC9010QC remote | | Yes | -| [Teknopoint](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teknopoint.cpp) | **Teknopoint** | Allegro SSA-09H A/C
GZ-055B-E1 remote | | - | +| [Teknopoint](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Teknopoint.cpp) | **Teknopoint** | Allegro SSA-09H A/C
GZ-055B-E1 remote
GZ01-BEJ0-000 remote | | - | | [Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.cpp) | **[Carrier](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.h)** | 42NQV025M2 / 38NYV025M2 A/C
42NQV035M2 / 38NYV035M2 A/C
42NQV050M2 / 38NYV050M2 A/C
42NQV060M2 / 38NYV060M2 A/C | | Yes | | [Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.cpp) | **[Toshiba](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Toshiba.h)** | Akita EVO II
RAS 18SKP-ES
RAS-2558V A/C
RAS-25SKVP2-ND A/C
RAS-B13N3KV2
RAS-B13N3KVP-E
WC-L03SE
WH-TA01JE remote
WH-TA04NE
WH-UB03NJ remote | | Yes | | [Transcold](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Transcold.cpp) | **[Transcold](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/ir_Transcold.h)** | M1-F-NO-6 A/C | | Yes | @@ -179,12 +183,15 @@ - HITACHI_AC - HITACHI_AC1 - HITACHI_AC2 +- HITACHI_AC264 +- HITACHI_AC296 - HITACHI_AC3 - HITACHI_AC344 - HITACHI_AC424 - INAX - JVC - KELON +- KELON168 - KELVINATOR - LASERTAG - LEGOPF diff --git a/docs/doxygen/html/IRac_8h_source.html b/docs/doxygen/html/IRac_8h_source.html index 89455aacd..8001c3af2 100644 --- a/docs/doxygen/html/IRac_8h_source.html +++ b/docs/doxygen/html/IRac_8h_source.html @@ -370,421 +370,437 @@
300  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
301  const bool swing_toggle, const int16_t sleep = -1);
302 #endif // SEND_HITACHI_AC1
-
303 #if SEND_HITACHI_AC344
-
304  void hitachi344(IRHitachiAc344 *ac,
+
303 #if SEND_HITACHI_AC264
+
304  void hitachi264(IRHitachiAc264 *ac,
305  const bool on, const stdAc::opmode_t mode,
-
306  const float degrees, const stdAc::fanspeed_t fan,
-
307  const stdAc::swingv_t swingv,
-
308  const stdAc::swingh_t swingh);
-
309 #endif // SEND_HITACHI_AC344
-
310 #if SEND_HITACHI_AC424
-
311  void hitachi424(IRHitachiAc424 *ac,
-
312  const bool on, const stdAc::opmode_t mode,
-
313  const float degrees, const stdAc::fanspeed_t fan,
-
314  const stdAc::swingv_t swingv);
-
315 #endif // SEND_HITACHI_AC424
-
316 #if SEND_KELON
-
317  void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode,
-
318  const int8_t dryGrade, const float degrees,
-
319  const stdAc::fanspeed_t fan, const bool toggleSwing,
-
320  const bool superCool, const int16_t sleep);
-
321 #endif // SEND_KELON
-
322 #if SEND_KELVINATOR
-
323  void kelvinator(IRKelvinatorAC *ac,
-
324  const bool on, const stdAc::opmode_t mode,
-
325  const float degrees, const stdAc::fanspeed_t fan,
-
326  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
327  const bool quiet, const bool turbo, const bool light,
-
328  const bool filter, const bool clean);
-
329 #endif // SEND_KELVINATOR
-
330 #if SEND_LG
-
331  void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
-
332  const bool on, const stdAc::opmode_t mode,
-
333  const float degrees, const stdAc::fanspeed_t fan,
-
334  const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
-
335  const stdAc::swingh_t swingh, const bool light);
-
336 #endif // SEND_LG
-
337 #if SEND_MIDEA
-
338  void midea(IRMideaAC *ac,
-
339  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
340  const float degrees, const stdAc::fanspeed_t fan,
-
341  const stdAc::swingv_t swingv, const bool turbo, const bool econo,
-
342  const bool light, const int16_t sleep = -1);
-
343 #endif // SEND_MIDEA
-
344 #if SEND_MIRAGE
-
345  void mirage(IRMirageAc *ac, const stdAc::state_t state);
-
346 #endif // SEND_MIRAGE
-
347 #if SEND_MITSUBISHI_AC
-
348  void mitsubishi(IRMitsubishiAC *ac,
-
349  const bool on, const stdAc::opmode_t mode,
-
350  const float degrees,
-
351  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
352  const stdAc::swingh_t swingh,
-
353  const bool quiet, const int16_t clock = -1);
-
354 #endif // SEND_MITSUBISHI_AC
-
355 #if SEND_MITSUBISHI112
-
356  void mitsubishi112(IRMitsubishi112 *ac,
-
357  const bool on, const stdAc::opmode_t mode,
-
358  const float degrees, const stdAc::fanspeed_t fan,
-
359  const stdAc::swingv_t swingv,
-
360  const stdAc::swingh_t swingh,
-
361  const bool quiet);
-
362 #endif // SEND_MITSUBISHI112
-
363 #if SEND_MITSUBISHI136
-
364  void mitsubishi136(IRMitsubishi136 *ac,
-
365  const bool on, const stdAc::opmode_t mode,
-
366  const float degrees, const stdAc::fanspeed_t fan,
-
367  const stdAc::swingv_t swingv, const bool quiet);
-
368 #endif // SEND_MITSUBISHI136
-
369 #if SEND_MITSUBISHIHEAVY
-
370  void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac,
-
371  const bool on, const stdAc::opmode_t mode,
-
372  const float degrees, const stdAc::fanspeed_t fan,
-
373  const stdAc::swingv_t swingv,
-
374  const stdAc::swingh_t swingh,
-
375  const bool turbo, const bool econo, const bool clean);
-
376  void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac,
-
377  const bool on, const stdAc::opmode_t mode,
-
378  const float degrees, const stdAc::fanspeed_t fan,
-
379  const stdAc::swingv_t swingv,
-
380  const stdAc::swingh_t swingh,
-
381  const bool quiet, const bool turbo, const bool econo,
-
382  const bool filter, const bool clean,
-
383  const int16_t sleep = -1);
-
384 #endif // SEND_MITSUBISHIHEAVY
-
385 #if SEND_NEOCLIMA
-
386  void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
-
387  const bool celsius, const float degrees,
-
388  const stdAc::fanspeed_t fan,
-
389  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
390  const bool turbo, const bool econo, const bool light,
-
391  const bool filter, const int16_t sleep = -1);
-
392 #endif // SEND_NEOCLIMA
-
393 #if SEND_PANASONIC_AC
-
394  void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model,
-
395  const bool on, const stdAc::opmode_t mode, const float degrees,
-
396  const stdAc::fanspeed_t fan,
-
397  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
398  const bool quiet, const bool turbo, const bool filter,
-
399  const int16_t clock = -1);
-
400 #endif // SEND_PANASONIC_AC
-
401 #if SEND_PANASONIC_AC32
-
402  void panasonic32(IRPanasonicAc32 *ac,
-
403  const bool on, const stdAc::opmode_t mode,
-
404  const float degrees, const stdAc::fanspeed_t fan,
-
405  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
-
406 #endif // SEND_PANASONIC_AC32
-
407 #if SEND_RHOSS
-
408  void rhoss(IRRhossAc *ac,
-
409  const bool on, const stdAc::opmode_t mode, const float degrees,
-
410  const stdAc::fanspeed_t fan, const stdAc::swingv_t swing);
-
411 #endif // SEND_RHOSS
-
412 #if SEND_SAMSUNG_AC
-
413  void samsung(IRSamsungAc *ac,
-
414  const bool on, const stdAc::opmode_t mode, const float degrees,
-
415  const stdAc::fanspeed_t fan,
-
416  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
417  const bool quiet, const bool turbo, const bool econo,
-
418  const bool light, const bool filter, const bool clean,
-
419  const bool beep, const int16_t sleep = -1,
-
420  const bool prevpower = true, const int16_t prevsleep = -1,
-
421  const bool forceextended = true);
-
422 #endif // SEND_SAMSUNG_AC
-
423 #if SEND_SANYO_AC
-
424  void sanyo(IRSanyoAc *ac,
-
425  const bool on, const stdAc::opmode_t mode, const float degrees,
-
426  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
427  const bool beep, const int16_t sleep = -1);
-
428 #endif // SEND_SANYO_AC
-
429 #if SEND_SANYO_AC88
-
430  void sanyo88(IRSanyoAc88 *ac,
-
431  const bool on, const stdAc::opmode_t mode,
-
432  const float degrees, const stdAc::fanspeed_t fan,
-
433  const stdAc::swingv_t swingv, const bool turbo,
-
434  const bool filter,
-
435  const int16_t sleep = -1, const int16_t clock = -1);
-
436 #endif // SEND_SANYO_AC88
-
437 #if SEND_SHARP_AC
-
438  void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
-
439  const bool on, const bool prev_power, const stdAc::opmode_t mode,
-
440  const float degrees, const stdAc::fanspeed_t fan,
-
441  const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
-
442  const bool turbo, const bool light,
-
443  const bool filter, const bool clean);
-
444 #endif // SEND_SHARP_AC
-
445 #if SEND_TCL112AC
-
446  void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model,
-
447  const bool on, const stdAc::opmode_t mode, const float degrees,
-
448  const stdAc::fanspeed_t fan,
-
449  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
450  const bool quiet, const bool turbo, const bool light,
-
451  const bool econo, const bool filter);
-
452 #endif // SEND_TCL112AC
-
453 #if SEND_TECHNIBEL_AC
-
454  void technibel(IRTechnibelAc *ac,
-
455  const bool on, const stdAc::opmode_t mode, const bool celsius,
-
456  const float degrees, const stdAc::fanspeed_t fan,
-
457  const stdAc::swingv_t swingv, const int16_t sleep = -1);
-
458 #endif // SEND_TECHNIBEL_AC
-
459 #if SEND_TECO
-
460  void teco(IRTecoAc *ac,
-
461  const bool on, const stdAc::opmode_t mode, const float degrees,
-
462  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
463  const bool light, const int16_t sleep = -1);
-
464 #endif // SEND_TECO
-
465 #if SEND_TOSHIBA_AC
-
466  void toshiba(IRToshibaAC *ac,
-
467  const bool on, const stdAc::opmode_t mode, const float degrees,
-
468  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
469  const bool turbo, const bool econo, const bool filter);
-
470 #endif // SEND_TOSHIBA_AC
-
471 #if SEND_TROTEC
-
472  void trotec(IRTrotecESP *ac,
-
473  const bool on, const stdAc::opmode_t mode, const float degrees,
-
474  const stdAc::fanspeed_t fan, const int16_t sleep = -1);
-
475 #endif // SEND_TROTEC
-
476 #if SEND_TROTEC_3550
-
477  void trotec3550(IRTrotec3550 *ac,
-
478  const bool on, const stdAc::opmode_t mode,
-
479  const bool celsius, const float degrees,
-
480  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv);
-
481 #endif // SEND_TROTEC_3550
-
482 #if SEND_TRUMA
-
483  void truma(IRTrumaAc *ac,
-
484  const bool on, const stdAc::opmode_t mode, const float degrees,
-
485  const stdAc::fanspeed_t fan, const bool quiet);
-
486 #endif // SEND_TRUMA
-
487 #if SEND_VESTEL_AC
-
488  void vestel(IRVestelAc *ac,
-
489  const bool on, const stdAc::opmode_t mode, const float degrees,
-
490  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
491  const bool turbo, const bool filter,
-
492  const int16_t sleep = -1, const int16_t clock = -1,
-
493  const bool sendNormal = true);
-
494 #endif // SEND_VESTEL_AC
-
495 #if SEND_VOLTAS
-
496  void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
-
497  const bool on, const stdAc::opmode_t mode,
-
498  const float degrees, const stdAc::fanspeed_t fan,
-
499  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
-
500  const bool turbo, const bool econo, const bool light,
-
501  const int16_t sleep = -1);
-
502 #endif // SEND_VOLTAS
-
503 #if SEND_WHIRLPOOL_AC
-
504  void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model,
-
505  const bool on, const stdAc::opmode_t mode, const float degrees,
-
506  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
-
507  const bool turbo, const bool light,
-
508  const int16_t sleep = -1, const int16_t clock = -1);
-
509 #endif // SEND_WHIRLPOOL_AC
-
510 #if SEND_TRANSCOLD
-
511  void transcold(IRTranscoldAc *ac,
-
512  const bool on, const stdAc::opmode_t mode, const float degrees,
-
513  const stdAc::fanspeed_t fan,
-
514  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
-
515 #endif // SEND_TRANSCOLD
-
516 static stdAc::state_t cleanState(const stdAc::state_t state);
-
517 static stdAc::state_t handleToggles(const stdAc::state_t desired,
-
518  const stdAc::state_t *prev = NULL);
-
519 }; // IRac class
-
520 
-
522 namespace IRAcUtils {
-
523  String resultAcToString(const decode_results * const results);
-
524  bool decodeToState(const decode_results *decode, stdAc::state_t *result,
-
525  const stdAc::state_t *prev = NULL);
-
526 } // namespace IRAcUtils
-
527 #endif // IRAC_H_
+
306  const float degrees, const stdAc::fanspeed_t fan);
+
307 #endif // SEND_HITACHI_AC264
+
308 #if SEND_HITACHI_AC296
+
309  void hitachi296(IRHitachiAc296 *ac,
+
310  const bool on, const stdAc::opmode_t mode,
+
311  const float degrees, const stdAc::fanspeed_t fan);
+
312 #endif // SEND_HITACHI_AC296
+
313 #if SEND_HITACHI_AC344
+
314  void hitachi344(IRHitachiAc344 *ac,
+
315  const bool on, const stdAc::opmode_t mode,
+
316  const float degrees, const stdAc::fanspeed_t fan,
+
317  const stdAc::swingv_t swingv,
+
318  const stdAc::swingh_t swingh);
+
319 #endif // SEND_HITACHI_AC344
+
320 #if SEND_HITACHI_AC424
+
321  void hitachi424(IRHitachiAc424 *ac,
+
322  const bool on, const stdAc::opmode_t mode,
+
323  const float degrees, const stdAc::fanspeed_t fan,
+
324  const stdAc::swingv_t swingv);
+
325 #endif // SEND_HITACHI_AC424
+
326 #if SEND_KELON
+
327  void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode,
+
328  const int8_t dryGrade, const float degrees,
+
329  const stdAc::fanspeed_t fan, const bool toggleSwing,
+
330  const bool superCool, const int16_t sleep);
+
331 #endif // SEND_KELON
+
332 #if SEND_KELVINATOR
+
333  void kelvinator(IRKelvinatorAC *ac,
+
334  const bool on, const stdAc::opmode_t mode,
+
335  const float degrees, const stdAc::fanspeed_t fan,
+
336  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
337  const bool quiet, const bool turbo, const bool light,
+
338  const bool filter, const bool clean);
+
339 #endif // SEND_KELVINATOR
+
340 #if SEND_LG
+
341  void lg(IRLgAc *ac, const lg_ac_remote_model_t model,
+
342  const bool on, const stdAc::opmode_t mode,
+
343  const float degrees, const stdAc::fanspeed_t fan,
+
344  const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
+
345  const stdAc::swingh_t swingh, const bool light);
+
346 #endif // SEND_LG
+
347 #if SEND_MIDEA
+
348  void midea(IRMideaAC *ac,
+
349  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
350  const float degrees, const stdAc::fanspeed_t fan,
+
351  const stdAc::swingv_t swingv,
+
352  const bool quiet, const bool quiet_prev, const bool turbo,
+
353  const bool econo, const bool light, const bool clean,
+
354  const int16_t sleep = -1);
+
355 #endif // SEND_MIDEA
+
356 #if SEND_MIRAGE
+
357  void mirage(IRMirageAc *ac, const stdAc::state_t state);
+
358 #endif // SEND_MIRAGE
+
359 #if SEND_MITSUBISHI_AC
+
360  void mitsubishi(IRMitsubishiAC *ac,
+
361  const bool on, const stdAc::opmode_t mode,
+
362  const float degrees,
+
363  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
364  const stdAc::swingh_t swingh,
+
365  const bool quiet, const int16_t clock = -1);
+
366 #endif // SEND_MITSUBISHI_AC
+
367 #if SEND_MITSUBISHI112
+
368  void mitsubishi112(IRMitsubishi112 *ac,
+
369  const bool on, const stdAc::opmode_t mode,
+
370  const float degrees, const stdAc::fanspeed_t fan,
+
371  const stdAc::swingv_t swingv,
+
372  const stdAc::swingh_t swingh,
+
373  const bool quiet);
+
374 #endif // SEND_MITSUBISHI112
+
375 #if SEND_MITSUBISHI136
+
376  void mitsubishi136(IRMitsubishi136 *ac,
+
377  const bool on, const stdAc::opmode_t mode,
+
378  const float degrees, const stdAc::fanspeed_t fan,
+
379  const stdAc::swingv_t swingv, const bool quiet);
+
380 #endif // SEND_MITSUBISHI136
+
381 #if SEND_MITSUBISHIHEAVY
+
382  void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac,
+
383  const bool on, const stdAc::opmode_t mode,
+
384  const float degrees, const stdAc::fanspeed_t fan,
+
385  const stdAc::swingv_t swingv,
+
386  const stdAc::swingh_t swingh,
+
387  const bool turbo, const bool econo, const bool clean);
+
388  void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac,
+
389  const bool on, const stdAc::opmode_t mode,
+
390  const float degrees, const stdAc::fanspeed_t fan,
+
391  const stdAc::swingv_t swingv,
+
392  const stdAc::swingh_t swingh,
+
393  const bool quiet, const bool turbo, const bool econo,
+
394  const bool filter, const bool clean,
+
395  const int16_t sleep = -1);
+
396 #endif // SEND_MITSUBISHIHEAVY
+
397 #if SEND_NEOCLIMA
+
398  void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode,
+
399  const bool celsius, const float degrees,
+
400  const stdAc::fanspeed_t fan,
+
401  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
402  const bool turbo, const bool econo, const bool light,
+
403  const bool filter, const int16_t sleep = -1);
+
404 #endif // SEND_NEOCLIMA
+
405 #if SEND_PANASONIC_AC
+
406  void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model,
+
407  const bool on, const stdAc::opmode_t mode, const float degrees,
+
408  const stdAc::fanspeed_t fan,
+
409  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
410  const bool quiet, const bool turbo, const bool filter,
+
411  const int16_t clock = -1);
+
412 #endif // SEND_PANASONIC_AC
+
413 #if SEND_PANASONIC_AC32
+
414  void panasonic32(IRPanasonicAc32 *ac,
+
415  const bool on, const stdAc::opmode_t mode,
+
416  const float degrees, const stdAc::fanspeed_t fan,
+
417  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
+
418 #endif // SEND_PANASONIC_AC32
+
419 #if SEND_RHOSS
+
420  void rhoss(IRRhossAc *ac,
+
421  const bool on, const stdAc::opmode_t mode, const float degrees,
+
422  const stdAc::fanspeed_t fan, const stdAc::swingv_t swing);
+
423 #endif // SEND_RHOSS
+
424 #if SEND_SAMSUNG_AC
+
425  void samsung(IRSamsungAc *ac,
+
426  const bool on, const stdAc::opmode_t mode, const float degrees,
+
427  const stdAc::fanspeed_t fan,
+
428  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
429  const bool quiet, const bool turbo, const bool econo,
+
430  const bool light, const bool filter, const bool clean,
+
431  const bool beep, const int16_t sleep = -1,
+
432  const bool prevpower = true, const int16_t prevsleep = -1,
+
433  const bool forceextended = true);
+
434 #endif // SEND_SAMSUNG_AC
+
435 #if SEND_SANYO_AC
+
436  void sanyo(IRSanyoAc *ac,
+
437  const bool on, const stdAc::opmode_t mode, const float degrees,
+
438  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
439  const bool beep, const int16_t sleep = -1);
+
440 #endif // SEND_SANYO_AC
+
441 #if SEND_SANYO_AC88
+
442  void sanyo88(IRSanyoAc88 *ac,
+
443  const bool on, const stdAc::opmode_t mode,
+
444  const float degrees, const stdAc::fanspeed_t fan,
+
445  const stdAc::swingv_t swingv, const bool turbo,
+
446  const bool filter,
+
447  const int16_t sleep = -1, const int16_t clock = -1);
+
448 #endif // SEND_SANYO_AC88
+
449 #if SEND_SHARP_AC
+
450  void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model,
+
451  const bool on, const bool prev_power, const stdAc::opmode_t mode,
+
452  const float degrees, const stdAc::fanspeed_t fan,
+
453  const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev,
+
454  const bool turbo, const bool light,
+
455  const bool filter, const bool clean);
+
456 #endif // SEND_SHARP_AC
+
457 #if SEND_TCL112AC
+
458  void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model,
+
459  const bool on, const stdAc::opmode_t mode, const float degrees,
+
460  const stdAc::fanspeed_t fan,
+
461  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
462  const bool quiet, const bool turbo, const bool light,
+
463  const bool econo, const bool filter);
+
464 #endif // SEND_TCL112AC
+
465 #if SEND_TECHNIBEL_AC
+
466  void technibel(IRTechnibelAc *ac,
+
467  const bool on, const stdAc::opmode_t mode, const bool celsius,
+
468  const float degrees, const stdAc::fanspeed_t fan,
+
469  const stdAc::swingv_t swingv, const int16_t sleep = -1);
+
470 #endif // SEND_TECHNIBEL_AC
+
471 #if SEND_TECO
+
472  void teco(IRTecoAc *ac,
+
473  const bool on, const stdAc::opmode_t mode, const float degrees,
+
474  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
475  const bool light, const int16_t sleep = -1);
+
476 #endif // SEND_TECO
+
477 #if SEND_TOSHIBA_AC
+
478  void toshiba(IRToshibaAC *ac,
+
479  const bool on, const stdAc::opmode_t mode, const float degrees,
+
480  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
481  const bool turbo, const bool econo, const bool filter);
+
482 #endif // SEND_TOSHIBA_AC
+
483 #if SEND_TROTEC
+
484  void trotec(IRTrotecESP *ac,
+
485  const bool on, const stdAc::opmode_t mode, const float degrees,
+
486  const stdAc::fanspeed_t fan, const int16_t sleep = -1);
+
487 #endif // SEND_TROTEC
+
488 #if SEND_TROTEC_3550
+
489  void trotec3550(IRTrotec3550 *ac,
+
490  const bool on, const stdAc::opmode_t mode,
+
491  const bool celsius, const float degrees,
+
492  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv);
+
493 #endif // SEND_TROTEC_3550
+
494 #if SEND_TRUMA
+
495  void truma(IRTrumaAc *ac,
+
496  const bool on, const stdAc::opmode_t mode, const float degrees,
+
497  const stdAc::fanspeed_t fan, const bool quiet);
+
498 #endif // SEND_TRUMA
+
499 #if SEND_VESTEL_AC
+
500  void vestel(IRVestelAc *ac,
+
501  const bool on, const stdAc::opmode_t mode, const float degrees,
+
502  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
503  const bool turbo, const bool filter,
+
504  const int16_t sleep = -1, const int16_t clock = -1,
+
505  const bool sendNormal = true);
+
506 #endif // SEND_VESTEL_AC
+
507 #if SEND_VOLTAS
+
508  void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model,
+
509  const bool on, const stdAc::opmode_t mode,
+
510  const float degrees, const stdAc::fanspeed_t fan,
+
511  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh,
+
512  const bool turbo, const bool econo, const bool light,
+
513  const int16_t sleep = -1);
+
514 #endif // SEND_VOLTAS
+
515 #if SEND_WHIRLPOOL_AC
+
516  void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model,
+
517  const bool on, const stdAc::opmode_t mode, const float degrees,
+
518  const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv,
+
519  const bool turbo, const bool light,
+
520  const int16_t sleep = -1, const int16_t clock = -1);
+
521 #endif // SEND_WHIRLPOOL_AC
+
522 #if SEND_TRANSCOLD
+
523  void transcold(IRTranscoldAc *ac,
+
524  const bool on, const stdAc::opmode_t mode, const float degrees,
+
525  const stdAc::fanspeed_t fan,
+
526  const stdAc::swingv_t swingv, const stdAc::swingh_t swingh);
+
527 #endif // SEND_TRANSCOLD
+
528 static stdAc::state_t cleanState(const stdAc::state_t state);
+
529 static stdAc::state_t handleToggles(const stdAc::state_t desired,
+
530  const stdAc::state_t *prev = NULL);
+
531 }; // IRac class
+
532 
+
534 namespace IRAcUtils {
+
535  String resultAcToString(const decode_results * const results);
+
536  bool decodeToState(const decode_results *decode, stdAc::state_t *result,
+
537  const stdAc::state_t *prev = NULL);
+
538 } // namespace IRAcUtils
+
539 #endif // IRAC_H_
Class for handling detailed Panasonic A/C messages.
Definition: ir_Panasonic.h:104
-
void airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Airwell A/C message with the supplied settings.
Definition: IRac.cpp:378
+
void airwell(IRAirwellAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Airwell A/C message with the supplied settings.
Definition: IRac.cpp:380
Support for Kelvinator A/C protocols.
Class for handling detailed Samsung A/C messages.
Definition: ir_Samsung.h:185
-
void hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi A/C message with the supplied settings.
Definition: IRac.cpp:1249
+
void hitachi(IRHitachiAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi A/C message with the supplied settings.
Definition: IRac.cpp:1251
Class for handling detailed Toshiba A/C messages.
Definition: ir_Toshiba.h:127
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:894
-
stdAc::state_t getStatePrev(void)
Get the previous internal A/C climate state that should have already been sent to the device....
Definition: IRac.cpp:149
-
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:144
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:917
+
stdAc::state_t getStatePrev(void)
Get the previous internal A/C climate state that should have already been sent to the device....
Definition: IRac.cpp:145
+
stdAc::state_t getState(void)
Get the current internal A/C climate state.
Definition: IRac.cpp:140
Class for handling detailed Mitsubishi Heavy 152-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:184
-
static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3336
-
void hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi 344-bit A/C message with the supplied settings.
Definition: IRac.cpp:1325
+
static stdAc::swingh_t strToSwingH(const char *str, const stdAc::swingh_t def=stdAc::swingh_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3428
+
void hitachi344(IRHitachiAc344 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Hitachi 344-bit A/C message with the supplied settings.
Definition: IRac.cpp:1385
@ kAuto
Class for handling detailed Airton 56-bit A/C messages.
Definition: ir_Airton.h:75
Support for Electra A/C protocols.
-
void ecoclim(IREcoclimAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1, const int16_t clock=-1)
Send an EcoClim A/C message with the supplied settings.
Definition: IRac.cpp:896
-
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:3193
+
void ecoclim(IREcoclimAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1, const int16_t clock=-1)
Send an EcoClim A/C message with the supplied settings.
Definition: IRac.cpp:898
+
void markAsSent(void)
Update the previous state to the current one.
Definition: IRac.cpp:3285
swingv_t
Common A/C settings for Vertical Swing.
Definition: IRsend.h:70
Airwell "Manchester code" based protocol. Some other Airwell products use the COOLIX protocol.
-
void daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin2 A/C message with the supplied settings.
Definition: IRac.cpp:773
+
void daikin2(IRDaikin2 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin2 A/C message with the supplied settings.
Definition: IRac.cpp:775
Support for Trotec protocols.
-
void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
Send a Sanyo A/C message with the supplied settings.
Definition: IRac.cpp:1920
+
void sanyo(IRSanyoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool beep, const int16_t sleep=-1)
Send a Sanyo A/C message with the supplied settings.
Definition: IRac.cpp:1992
Class for handling detailed Daikin 280-bit A/C messages.
Definition: ir_Daikin.h:693
Class for handling detailed Delonghi A/C messages.
Definition: ir_Delonghi.h:73
Class for handling detailed Corona A/C messages.
Definition: ir_Corona.h:107
-
void kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Kelvinator A/C message with the supplied settings.
Definition: IRac.cpp:1428
+
void kelvinator(IRKelvinatorAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Kelvinator A/C message with the supplied settings.
Definition: IRac.cpp:1488
Class for handling detailed Daikin 312-bit A/C messages.
Definition: ir_Daikin.h:775
-
void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Fujitsu A/C message with the supplied settings.
Definition: IRac.cpp:981
+
void fujitsu(IRFujitsuAC *ac, const fujitsu_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Fujitsu A/C message with the supplied settings.
Definition: IRac.cpp:983
Support for Neoclima protocols. Analysis by crankyoldgit & AndreyShpilevoy.
Class for handling detailed Daikin 128-bit A/C messages.
Definition: ir_Daikin.h:1040
fanspeed_t
Common A/C settings for Fan Speeds.
Definition: IRsend.h:58
Support for Sharp protocols.
-
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition: IRac.cpp:3511
+
static String fanspeedToString(const stdAc::fanspeed_t speed)
Convert the supplied fan speed enum into the appropriate String.
Definition: IRac.cpp:3605
whirlpool_ac_remote_model_t
Whirlpool A/C model numbers.
Definition: IRsend.h:188
Carrier A/C.
-
void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
Send a Whirlpool A/C message with the supplied settings.
Definition: IRac.cpp:2383
-
Results returned from the decoder.
Definition: IRrecv.h:92
-
void daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:842
-
void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const bool prevpower=true, const int16_t prevsleep=-1, const bool forceextended=true)
Send a Samsung A/C message with the supplied settings.
Definition: IRac.cpp:1876
-
void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Voltas A/C message with the supplied settings.
Definition: IRac.cpp:2342
-
void transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Transcold A/C message with the supplied settings.
Definition: IRac.cpp:2420
-
tcl_ac_remote_model_t
TCL A/C model numbers.
Definition: IRsend.h:176
-
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:3199
-
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:3210
+
void whirlpool(IRWhirlpoolAc *ac, const whirlpool_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1, const int16_t clock=-1)
Send a Whirlpool A/C message with the supplied settings.
Definition: IRac.cpp:2455
+
Results returned from the decoder.
Definition: IRrecv.h:99
+
void daikin64(IRDaikin64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:844
+
void samsung(IRSamsungAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep=-1, const bool prevpower=true, const int16_t prevsleep=-1, const bool forceextended=true)
Send a Samsung A/C message with the supplied settings.
Definition: IRac.cpp:1948
+
void voltas(IRVoltas *ac, const voltas_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Voltas A/C message with the supplied settings.
Definition: IRac.cpp:2414
+
void transcold(IRTranscoldAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Transcold A/C message with the supplied settings.
Definition: IRac.cpp:2492
+
tcl_ac_remote_model_t
TCL (& Teknopoint) A/C model numbers.
Definition: IRsend.h:176
+
bool sendAc(void)
Send an A/C message based soley on our internal state.
Definition: IRac.cpp:3291
+
static bool cmpStates(const stdAc::state_t a, const stdAc::state_t b)
Compare two AirCon states.
Definition: IRac.cpp:3302
Support for Midea protocols. Midea added by crankyoldgit & bwze.
+
void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool quiet_prev, const bool turbo, const bool econo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Midea A/C message with the supplied settings.
Definition: IRac.cpp:1580
Support for Daikin A/C protocols.
gree_ac_remote_model_t
Gree A/C model numbers.
Definition: IRsend.h:134
Class for handling detailed Daikin 64-bit A/C messages.
Definition: ir_Daikin.h:1170
-
void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep=-1)
Send a Haier YRWO2 A/C message with the supplied settings.
Definition: IRac.cpp:1213
+
void haierYrwo2(IRHaierACYRW02 *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep=-1)
Send a Haier YRWO2 A/C message with the supplied settings.
Definition: IRac.cpp:1215
Support for Coolix A/C protocols.
-
void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
Send a Vestel A/C message with the supplied settings.
Definition: IRac.cpp:2300
+
void vestel(IRVestelAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1, const bool sendNormal=true)
Send a Vestel A/C message with the supplied settings.
Definition: IRac.cpp:2372
Class for handling detailed Rhoss A/C messages.
Definition: ir_Rhoss.h:94
-
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition: ir_Hitachi.h:371
-
void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
Send a Daikin A/C message with the supplied settings.
Definition: IRac.cpp:609
+
Class for handling detailed Hitachi 53-byte/424-bit A/C messages.
Definition: ir_Hitachi.h:497
+
void daikin(IRDaikinESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool clean)
Send a Daikin A/C message with the supplied settings.
Definition: IRac.cpp:611
IRac(const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
Class constructor.
Definition: IRac.cpp:70
Class for handling detailed Daikin 216-bit A/C messages.
Definition: ir_Daikin.h:873
Class for handling detailed Voltas A/C messages.
Definition: ir_Voltas.h:90
-
void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Sharp A/C message with the supplied settings.
Definition: IRac.cpp:2003
+
void sharp(IRSharpAc *ac, const sharp_ac_remote_model_t model, const bool on, const bool prev_power, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, const bool turbo, const bool light, const bool filter, const bool clean)
Send a Sharp A/C message with the supplied settings.
Definition: IRac.cpp:2075
hitachi_ac1_remote_model_t
HITACHI_AC1 A/C model numbers.
Definition: IRsend.h:146
-
void haier176(IRHaierAC176 *ac, const haier_ac176_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep=-1)
Send a Haier 176 bit A/C message with the supplied settings.
Definition: IRac.cpp:1171
-
void daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 128-bit A/C message with the supplied settings.
Definition: IRac.cpp:649
-
Class for handling detailed Hitachi 224-bit A/C messages.
Definition: ir_Hitachi.h:246
+
void haier176(IRHaierAC176 *ac, const haier_ac176_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool quiet, const bool filter, const int16_t sleep=-1)
Send a Haier 176 bit A/C message with the supplied settings.
Definition: IRac.cpp:1173
+
void daikin128(IRDaikin128 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool light, const bool econo, const int16_t sleep=-1, const int16_t clock=-1)
Send a Daikin 128-bit A/C message with the supplied settings.
Definition: IRac.cpp:651
+
Class for handling detailed Hitachi 224-bit A/C messages.
Definition: ir_Hitachi.h:372
const int8_t kGpioUnused
A placeholder for not using an actual GPIO.
Definition: IRac.h:51
-
Common functions for use with all A/Cs supported by the IRac class.
Definition: IRac.cpp:3556
+
Common functions for use with all A/Cs supported by the IRac class.
Definition: IRac.cpp:3650
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:108
-
void haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Haier A/C message with the supplied settings.
Definition: IRac.cpp:1130
-
Definition: ir_Kelon.h:70
+
void haier(IRHaierAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Haier A/C message with the supplied settings.
Definition: IRac.cpp:1132
+
Definition: ir_Kelon.h:77
Class for handling detailed Whirlpool A/C messages.
Definition: ir_Whirlpool.h:132
-
Class for handling detailed Hitachi 344-bit A/C messages.
Definition: ir_Hitachi.h:459
-
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition: IRac.cpp:3488
+
Class for handling detailed Hitachi 344-bit A/C messages.
Definition: ir_Hitachi.h:586
+
static String boolToString(const bool value)
Convert the supplied boolean into the appropriate String.
Definition: IRac.cpp:3582
stdAc::state_t next
The state we want the device to be in after we send.
Definition: IRac.h:104
-
std::string String
Definition: IRremoteESP8266.h:1339
-
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition: ir_Mitsubishi.h:265
-
void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
Send a Trotec A/C message with the supplied settings.
Definition: IRac.cpp:2199
-
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3377
+
std::string String
Definition: IRremoteESP8266.h:1373
+
Class for handling detailed Mitsubishi 144-bit A/C messages.
Definition: ir_Mitsubishi.h:266
+
void trotec(IRTrotecESP *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const int16_t sleep=-1)
Send a Trotec A/C message with the supplied settings.
Definition: IRac.cpp:2271
+
static int16_t strToModel(const char *str, const int16_t def=-1)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3469
+
void hitachi296(IRHitachiAc296 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a Hitachi 296-bit A/C message with the supplied settings.
Definition: IRac.cpp:1354
Class for handling detailed Amcor A/C messages.
Definition: ir_Amcor.h:90
-
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition: ir_Mitsubishi.h:399
+
Class for handling detailed Mitsubishi 122-bit A/C messages.
Definition: ir_Mitsubishi.h:400
EcoClim A/C protocol.
Class for handling detailed TCL A/C messages.
Definition: ir_Tcl.h:124
-
void daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
Send a Daikin 176-bit A/C message with the supplied settings.
Definition: IRac.cpp:741
-
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:112
+
void daikin176(IRDaikin176 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingh_t swingh)
Send a Daikin 176-bit A/C message with the supplied settings.
Definition: IRac.cpp:743
+
Class for handling detailed Electra A/C messages.
Definition: ir_Electra.h:113
Support for TCL protocols.
-
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition: IRac.cpp:3222
-
void daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
Send a Daikin 216-bit A/C message with the supplied settings.
Definition: IRac.cpp:812
+
bool hasStateChanged(void)
Check if the internal state has changed from what was previously sent.
Definition: IRac.cpp:3314
+
void daikin216(IRDaikin216 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo)
Send a Daikin 216-bit A/C message with the supplied settings.
Definition: IRac.cpp:814
Support for Transcold A/C protocols.
Support for Hitachi A/C protocols.
Support for Panasonic protocols.
-
void rhoss(IRRhossAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swing)
Send an Rhoss A/C message with the supplied settings.
Definition: IRac.cpp:2459
-
static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
Create a new state base on desired & previous states but handle any state changes for options that ne...
Definition: IRac.cpp:2498
-
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:345
+
void rhoss(IRRhossAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swing)
Send an Rhoss A/C message with the supplied settings.
Definition: IRac.cpp:2531
+
static stdAc::state_t handleToggles(const stdAc::state_t desired, const stdAc::state_t *prev=NULL)
Create a new state base on desired & previous states but handle any state changes for options that ne...
Definition: IRac.cpp:2570
+
Class for handling detailed Mitsubishi 136-bit A/C messages.
Definition: ir_Mitsubishi.h:346
panasonic_ac_remote_model_t
Panasonic A/C model numbers.
Definition: IRsend.h:158
+
void hitachi264(IRHitachiAc264 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send a Hitachi 264-bit A/C message with the supplied settings.
Definition: IRac.cpp:1325
swingh_t
Common A/C settings for Horizontal Swing.
Definition: IRsend.h:83
-
void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
Send a Mitsubishi 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1597
-
bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
Definition: IRac.cpp:3985
-
Class for handling detailed Hitachi 104-bit A/C messages.
Definition: ir_Hitachi.h:303
+
void mitsubishi112(IRMitsubishi112 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet)
Send a Mitsubishi 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:1669
+
Class for handling detailed Hitachi 264-bit A/C messages.
Definition: ir_Hitachi.h:607
+
bool decodeToState(const decode_results *decode, stdAc::state_t *result, const stdAc::state_t *prev)
Convert a valid IR A/C remote message that we understand enough into a Common A/C state.
Definition: IRac.cpp:4093
+
Class for handling detailed Hitachi 104-bit A/C messages.
Definition: ir_Hitachi.h:429
Class for handling detailed Mirage 120-bit A/C messages.
Definition: ir_Mirage.h:196
-
void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Hitachi 424-bit A/C message with the supplied settings.
Definition: IRac.cpp:1359
+
void hitachi424(IRHitachiAc424 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Hitachi 424-bit A/C message with the supplied settings.
Definition: IRac.cpp:1419
Support for Samsung protocols. Samsung originally added from https://github.com/shirriff/Arduino-IRre...
-
static String opmodeToString(const stdAc::opmode_t mode, const bool ha=false)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:3496
-
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition: IRac.cpp:3562
-
void daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
Send a Daikin 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:686
+
static String opmodeToString(const stdAc::opmode_t mode, const bool ha=false)
Convert the supplied operation mode into the appropriate String.
Definition: IRac.cpp:3590
+
String resultAcToString(const decode_results *const result)
Display the human readable state of an A/C message if we can.
Definition: IRac.cpp:3656
+
void daikin152(IRDaikin152 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet, const bool turbo, const bool econo)
Send a Daikin 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:688
fujitsu_ac_remote_model_t
Fujitsu A/C model numbers.
Definition: IRsend.h:120
Support for Gree A/C protocols.
Class for handling detailed Carrier 64 bit A/C messages.
Definition: ir_Carrier.h:84
+
Definition: ir_Hitachi.h:624
Support for Mirage protocol.
-
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:153
-
Class for handling detailed Kelvinator A/C messages.
Definition: ir_Kelvinator.h:121
+
Class for handling detailed Midea A/C messages.
Definition: ir_Midea.h:173
+
Class for handling detailed Kelvinator A/C messages.
Definition: ir_Kelvinator.h:132
bool _inverted
IR LED is lit when GPIO is LOW (true) or HIGH (false)?
Definition: IRac.h:110
Class for handling detailed Fujitsu A/C messages.
Definition: ir_Fujitsu.h:173
Support for Airton protocol.
Support for Mitsubishi Heavy Industry protocols. Code to emulate Mitsubishi Heavy Industries A/C IR r...
Class for handling detailed Coolix A/C messages.
Definition: ir_Coolix.h:120
-
void midea(IRMideaAC *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool light, const int16_t sleep=-1)
Send a Midea A/C message with the supplied settings.
Definition: IRac.cpp:1510
-
void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1794
-
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3526
+
void panasonic(IRPanasonicAc *ac, const panasonic_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool filter, const int16_t clock=-1)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1866
+
static String swingvToString(const stdAc::swingv_t swingv)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3620
Support for Mitsubishi protocols. Mitsubishi (TV) decoding added from https://github....
A universal/common/generic interface for controling supported A/Cs.
Definition: IRac.h:55
Support for Teco protocols.
Class for handling detailed Trotec 3550 A/C messages.
Definition: ir_Trotec.h:198
Delonghi A/C.
-
void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition: IRac.cpp:938
-
static stdAc::state_t cleanState(const stdAc::state_t state)
Create a new state base on the provided state that has been suitably fixed.
Definition: IRac.cpp:2485
+
void electra(IRElectraAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool lighttoggle, const bool clean)
Send an Electra A/C message with the supplied settings.
Definition: IRac.cpp:940
+
static stdAc::state_t cleanState(const stdAc::state_t state)
Create a new state base on the provided state that has been suitably fixed.
Definition: IRac.cpp:2557
Support for Argo Ulisse 13 DCI Mobile Split ACs.
-
void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
Send a Mitsubishi A/C message with the supplied settings.
Definition: IRac.cpp:1559
-
void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Amcor A/C message with the supplied settings.
Definition: IRac.cpp:406
+
void mitsubishi(IRMitsubishiAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const int16_t clock=-1)
Send a Mitsubishi A/C message with the supplied settings.
Definition: IRac.cpp:1631
+
void amcor(IRAmcorAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan)
Send an Amcor A/C message with the supplied settings.
Definition: IRac.cpp:408
Class for handling detailed Technibel A/C messages.
Definition: ir_Technibel.h:77
Class for handling detailed EcoClim A/C 56 bit messages.
Definition: ir_Ecoclim.h:84
Class for handling detailed Airwell A/C messages.
Definition: ir_Airwell.h:60
Support for Voltas A/C protocol.
Class for handling detailed Daikin 152-bit A/C messages.
Definition: ir_Daikin.h:1110
-
Class for handling detailed LG A/C messages.
Definition: ir_LG.h:112
+
Class for handling detailed LG A/C messages.
Definition: ir_LG.h:114
Support for Fujitsu A/C protocols. Fujitsu A/C support added by Jonny Graham.
-
void trotec3550(IRTrotec3550 *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Trotec 3550 A/C message with the supplied settings.
Definition: IRac.cpp:2231
+
void trotec3550(IRTrotec3550 *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Trotec 3550 A/C message with the supplied settings.
Definition: IRac.cpp:2303
Class for handling detailed Haier A/C messages.
Definition: ir_Haier.h:292
-
void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
Send a Neoclima A/C message with the supplied settings.
Definition: IRac.cpp:1753
+
void neoclima(IRNeoclimaAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool filter, const int16_t sleep=-1)
Send a Neoclima A/C message with the supplied settings.
Definition: IRac.cpp:1825
Class for handling detailed Daikin 160-bit A/C messages.
Definition: ir_Daikin.h:929
Class for handling detailed Sharp A/C messages.
Definition: ir_Sharp.h:153
Class for handling detailed Haier 176 bit A/C messages.
Definition: ir_Haier.h:362
Support for Goodweather compatible HVAC protocols.
-
void argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)
Send an Argo A/C message with the supplied settings.
Definition: IRac.cpp:438
-
void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool filter)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:2163
+
void argo(IRArgoAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const int16_t sleep=-1)
Send an Argo A/C message with the supplied settings.
Definition: IRac.cpp:440
+
void toshiba(IRToshibaAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool econo, const bool filter)
Send a Toshiba A/C message with the supplied settings.
Definition: IRac.cpp:2235
lg_ac_remote_model_t
LG A/C model numbers.
Definition: IRsend.h:194
-
void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
Send a Mitsubishi 136-bit A/C message with the supplied settings.
Definition: IRac.cpp:1633
+
void mitsubishi136(IRMitsubishi136 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool quiet)
Send a Mitsubishi 136-bit A/C message with the supplied settings.
Definition: IRac.cpp:1705
@ kAuto
Support for Rhoss A/C protocol.
-
void airton(IRAirtonAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool econo, const bool filter, const int16_t sleep=-1)
Send an Airton 56-bit A/C message with the supplied settings.
Definition: IRac.cpp:347
+
void airton(IRAirtonAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const bool econo, const bool filter, const int16_t sleep=-1)
Send an Airton 56-bit A/C message with the supplied settings.
Definition: IRac.cpp:349
bool _modulation
Is frequency modulation to be used?
Definition: IRac.h:111
-
void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
Send a Teco A/C message with the supplied settings.
Definition: IRac.cpp:2129
-
static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3228
+
void teco(IRTecoAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool light, const int16_t sleep=-1)
Send a Teco A/C message with the supplied settings.
Definition: IRac.cpp:2201
+
static stdAc::opmode_t strToOpmode(const char *str, const stdAc::opmode_t def=stdAc::opmode_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3320
Support for Sanyo protocols. Sanyo LC7461 support originally by marcosamarinho Sanyo SA 8650B origina...
-
void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
Send a Hitachi1 A/C message with the supplied settings.
Definition: IRac.cpp:1286
+
void hitachi1(IRHitachiAc1 *ac, const hitachi_ac1_remote_model_t model, const bool on, const bool power_toggle, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool swing_toggle, const int16_t sleep=-1)
Send a Hitachi1 A/C message with the supplied settings.
Definition: IRac.cpp:1288
Class for handling detailed Transcold A/C messages.
Definition: ir_Transcold.h:120
@ kOff
-
void panasonic32(IRPanasonicAc32 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1830
+
void panasonic32(IRPanasonicAc32 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh)
Send a Panasonic A/C message with the supplied settings.
Definition: IRac.cpp:1902
Support for Whirlpool protocols. Decoding help from: @redmusicxd, @josh929800, @raducostea.
-
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition: IRac.cpp:3470
-
void sanyo88(IRSanyoAc88 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Sanyo 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:1961
-
void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:1668
-
static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3295
+
static bool strToBool(const char *str, const bool def=false)
Convert the supplied str into the appropriate boolean value.
Definition: IRac.cpp:3564
+
void sanyo88(IRSanyoAc88 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool filter, const int16_t sleep=-1, const int16_t clock=-1)
Send a Sanyo 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:2033
+
void mitsubishiHeavy88(IRMitsubishiHeavy88Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool clean)
Send a Mitsubishi Heavy 88-bit A/C message with the supplied settings.
Definition: IRac.cpp:1740
+
static stdAc::swingv_t strToSwingV(const char *str, const stdAc::swingv_t def=stdAc::swingv_t::kOff)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3387
Class for handling detailed Vestel A/C messages.
Definition: ir_Vestel.h:100
Class for handling detailed Panasonic 32bit A/C messages.
Definition: ir_Panasonic.h:223
-
void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter)
Send a TCL 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:2059
-
void mirage(IRMirageAc *ac, const stdAc::state_t state)
Send a Mirage 120-bit A/C message with the supplied settings.
Definition: IRac.cpp:1540
+
void tcl112(IRTcl112Ac *ac, const tcl_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool light, const bool econo, const bool filter)
Send a TCL 112-bit A/C message with the supplied settings.
Definition: IRac.cpp:2131
+
void mirage(IRMirageAc *ac, const stdAc::state_t state)
Send a Mirage 120-bit A/C message with the supplied settings.
Definition: IRac.cpp:1612
Class for handling detailed Trotec A/C messages.
Definition: ir_Trotec.h:133
Support for Truma protocol.
Class for handling detailed Teco A/C messages.
Definition: ir_Teco.h:62
-
void truma(IRTrumaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const bool quiet)
Send a Truma A/C message with the supplied settings.
Definition: IRac.cpp:2263
-
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3542
+
void truma(IRTrumaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const bool quiet)
Send a Truma A/C message with the supplied settings.
Definition: IRac.cpp:2335
+
static String swinghToString(const stdAc::swingh_t swingh)
Convert the supplied enum into the appropriate String.
Definition: IRac.cpp:3636
Class for handling detailed Truma A/C messages.
Definition: ir_Truma.h:69
Support for Technibel protocol.
-
void delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
Send a Delonghi A/C message with the supplied settings.
Definition: IRac.cpp:872
-
void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode, const int8_t dryGrade, const float degrees, const stdAc::fanspeed_t fan, const bool toggleSwing, const bool superCool, const int16_t sleep)
Send a Kelon A/C message with the supplied settings.
Definition: IRac.cpp:1394
-
Support for Kelan AC protocol. Both sending and decoding should be functional for models of series KE...
+
void delonghiac(IRDelonghiAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const bool turbo, const int16_t sleep=-1)
Send a Delonghi A/C message with the supplied settings.
Definition: IRac.cpp:874
+
void kelon(IRKelonAc *ac, const bool togglePower, const stdAc::opmode_t mode, const int8_t dryGrade, const float degrees, const stdAc::fanspeed_t fan, const bool toggleSwing, const bool superCool, const int16_t sleep)
Send a Kelon A/C message with the supplied settings.
Definition: IRac.cpp:1454
+
Support for Kelan AC protocol.
stdAc::state_t _prev
The state we expect the device to currently be in.
Definition: IRac.h:112
Class for handling detailed Haier ACYRW02 A/C messages.
Definition: ir_Haier.h:460
-
void daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Daikin 160-bit A/C message with the supplied settings.
Definition: IRac.cpp:719
-
void corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
Send a Corona A/C message with the supplied settings.
Definition: IRac.cpp:574
-
static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
Initialise the given state with the supplied settings.
Definition: IRac.cpp:101
-
void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, const stdAc::swingh_t swingh, const bool light)
Send a LG A/C message with the supplied settings.
Definition: IRac.cpp:1466
-
void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:1709
+
void daikin160(IRDaikin160 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv)
Send a Daikin 160-bit A/C message with the supplied settings.
Definition: IRac.cpp:721
+
void corona(IRCoronaAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool econo)
Send a Corona A/C message with the supplied settings.
Definition: IRac.cpp:576
+
static void initState(stdAc::state_t *state, const decode_type_t vendor, const int16_t model, const bool power, const stdAc::opmode_t mode, const float degrees, const bool celsius, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool light, const bool filter, const bool clean, const bool beep, const int16_t sleep, const int16_t clock)
Initialise the given state with the supplied settings.
Definition: IRac.cpp:100
+
void lg(IRLgAc *ac, const lg_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingv_t swingv_prev, const stdAc::swingh_t swingh, const bool light)
Send a LG A/C message with the supplied settings.
Definition: IRac.cpp:1527
+
void mitsubishiHeavy152(IRMitsubishiHeavy152Ac *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool quiet, const bool turbo, const bool econo, const bool filter, const bool clean, const int16_t sleep=-1)
Send a Mitsubishi Heavy 152-bit A/C message with the supplied settings.
Definition: IRac.cpp:1781
@ kOff
Support for Haier A/C protocols. The specifics of reverse engineering the protocols details:
Class for handling detailed Mitsubishi Heavy 88-bit A/C messages.
Definition: ir_MitsubishiHeavy.h:271
Class for handling detailed Gree A/C messages.
Definition: ir_Gree.h:152
-
void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Coolix A/C message with the supplied settings.
Definition: IRac.cpp:507
-
static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3264
+
void coolix(IRCoolixAC *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Coolix A/C message with the supplied settings.
Definition: IRac.cpp:509
+
static stdAc::fanspeed_t strToFanspeed(const char *str, const stdAc::fanspeed_t def=stdAc::fanspeed_t::kAuto)
Convert the supplied str into the appropriate enum.
Definition: IRac.cpp:3356
Support for Toshiba protocols.
-
void gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Gree A/C message with the supplied settings.
Definition: IRac.cpp:1090
-
void goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
Send a Goodweather A/C message with the supplied settings.
Definition: IRac.cpp:1046
+
void gree(IRGreeAC *ac, const gree_ac_remote_model_t model, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const stdAc::swingh_t swingh, const bool turbo, const bool econo, const bool light, const bool clean, const int16_t sleep=-1)
Send a Gree A/C message with the supplied settings.
Definition: IRac.cpp:1092
+
void goodweather(IRGoodweatherAc *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const bool turbo, const bool light, const int16_t sleep=-1)
Send a Goodweather A/C message with the supplied settings.
Definition: IRac.cpp:1048
Structure to hold a common A/C state.
Definition: IRsend.h:97
Class for handling detailed Goodweather A/C messages.
Definition: ir_Goodweather.h:100
Support for Vestel protocols. Vestel added by Erdem U. Altinyurt.
@@ -792,15 +808,15 @@
Class for handling detailed Argo A/C messages.
Definition: ir_Argo.h:127
Class for handling detailed Sanyo A/C messages.
Definition: ir_Sanyo.h:226
Class for handling detailed Neoclima A/C messages.
Definition: ir_Neoclima.h:120
-
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition: IRac.cpp:154
+
static bool isProtocolSupported(const decode_type_t protocol)
Is the given protocol supported by the IRac class?
Definition: IRac.cpp:150
Class for handling detailed Daikin 176-bit A/C messages.
Definition: ir_Daikin.h:981
Amcor A/C protocol.
uint16_t _pin
The GPIO to use to transmit messages from.
Definition: IRac.h:109
-
void technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Technibel A/C message with the supplied settings.
Definition: IRac.cpp:2096
+
void technibel(IRTechnibelAc *ac, const bool on, const stdAc::opmode_t mode, const bool celsius, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Technibel A/C message with the supplied settings.
Definition: IRac.cpp:2168
voltas_ac_remote_model_t
Voltas A/C model numbers.
Definition: IRsend.h:182
sharp_ac_remote_model_t
Sharp A/C model numbers.
Definition: IRsend.h:169
Support for LG protocols.
-
void carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Carrier 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:470
+
void carrier64(IRCarrierAc64 *ac, const bool on, const stdAc::opmode_t mode, const float degrees, const stdAc::fanspeed_t fan, const stdAc::swingv_t swingv, const int16_t sleep=-1)
Send a Carrier 64-bit A/C message with the supplied settings.
Definition: IRac.cpp:472
haier_ac176_remote_model_t
HAIER_AC176 A/C model numbers.
Definition: IRsend.h:140
opmode_t
Common A/C settings for A/C operating modes.
Definition: IRsend.h:46
diff --git a/docs/doxygen/html/IRrecv_8h.html b/docs/doxygen/html/IRrecv_8h.html index 726b05484..695862b2b 100644 --- a/docs/doxygen/html/IRrecv_8h.html +++ b/docs/doxygen/html/IRrecv_8h.html @@ -128,7 +128,7 @@   const uint32_t kFnvBasis32 = 2166136261UL   -const uint8_t kDefaultESP32Timer = 3 +const uint8_t kDefaultESP32Timer = SOC_TIMER_GROUP_TOTAL_TIMERS - 1   const uint16_t kStateSizeMax = kHitachiAc2StateLength   @@ -141,7 +141,7 @@

- +
const uint8_t kDefaultESP32Timer = 3const uint8_t kDefaultESP32Timer = SOC_TIMER_GROUP_TOTAL_TIMERS - 1
diff --git a/docs/doxygen/html/IRrecv_8h_source.html b/docs/doxygen/html/IRrecv_8h_source.html index 654f87515..7c2d188b7 100644 --- a/docs/doxygen/html/IRrecv_8h_source.html +++ b/docs/doxygen/html/IRrecv_8h_source.html @@ -123,1012 +123,1036 @@
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.
- +
55 #ifdef ESP32
+
56 // Which of the ESP32 timers to use by default.
+
57 // (3 for most ESP32s, 1 for ESP32-C3s)
+
58 #ifdef SOC_TIMER_GROUP_TOTAL_TIMERS
+
59 const uint8_t kDefaultESP32Timer = SOC_TIMER_GROUP_TOTAL_TIMERS - 1;
+
60 #else // SOC_TIMER_GROUP_TOTAL_TIMERS
+
61 const uint8_t kDefaultESP32Timer = 3;
+
62 #endif // SOC_TIMER_GROUP_TOTAL_TIMERS
+
63 #endif // ESP32
+
64 
+
65 #if DECODE_AC
+
66 // Hitachi AC is the current largest state size.
+ +
68 #else // DECODE_AC
+
69 // Just define something (a uint64_t)
+
70 const uint16_t kStateSizeMax = sizeof(uint64_t);
+
71 #endif // DECODE_AC
+
72 
+
73 // Types
+
74 
+
76 typedef struct {
+
77  uint8_t recvpin; // pin for IR data from detector
+
78  uint8_t rcvstate; // state machine
+
79  uint16_t timer; // state timer, counts 50uS ticks.
+
80  uint16_t bufsize; // max. nr. of entries in the capture buffer.
+
81  uint16_t *rawbuf; // raw data
+
82  // uint16_t is used for rawlen as it saves 3 bytes of iram in the interrupt
+
83  // handler. Don't ask why, I don't know. It just does.
+
84  uint16_t rawlen; // counter of entries in rawbuf.
+
85  uint8_t overflow; // Buffer overflow indicator.
+
86  uint8_t timeout; // Nr. of milliSeconds before we give up.
+
87 } irparams_t;
88 
-
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_ARRIS
-
291  bool decodeArris(decode_results *results, uint16_t offset = kStartOffset,
-
292  const uint16_t nbits = kArrisBits, const bool strict = true);
-
293 #endif // DECODE_ARRIS
-
294 #if DECODE_SONY
-
295  bool decodeSony(decode_results *results, uint16_t offset = kStartOffset,
-
296  const uint16_t nbits = kSonyMinBits,
-
297  const bool strict = false);
-
298 #endif
-
299 #if DECODE_SANYO
-
300  // DISABLED due to poor quality.
-
301  // bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,
-
302  // uint16_t nbits = kSanyoSA8650BBits,
-
303  // bool strict = false);
-
304  bool decodeSanyoLC7461(decode_results *results,
-
305  uint16_t offset = kStartOffset,
-
306  const uint16_t nbits = kSanyoLC7461Bits,
-
307  const bool strict = true);
-
308 #endif
-
309 #if DECODE_SANYO_AC
-
310  bool decodeSanyoAc(decode_results *results,
-
311  uint16_t offset = kStartOffset,
-
312  const uint16_t nbits = kSanyoAcBits,
-
313  const bool strict = true);
-
314 #endif // DECODE_SANYO_AC
-
315 #if DECODE_SANYO_AC88
-
316  bool decodeSanyoAc88(decode_results *results,
-
317  uint16_t offset = kStartOffset,
-
318  const uint16_t nbits = kSanyoAc88Bits,
-
319  const bool strict = true);
-
320 #endif // DECODE_SANYO_AC88
-
321 #if DECODE_MITSUBISHI
-
322  bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset,
-
323  const uint16_t nbits = kMitsubishiBits,
-
324  const bool strict = true);
-
325 #endif
-
326 #if DECODE_MITSUBISHI2
-
327  bool decodeMitsubishi2(decode_results *results,
-
328  uint16_t offset = kStartOffset,
-
329  const uint16_t nbits = kMitsubishiBits,
-
330  const bool strict = true);
-
331 #endif
-
332 #if DECODE_MITSUBISHI_AC
-
333  bool decodeMitsubishiAC(decode_results *results,
-
334  uint16_t offset = kStartOffset,
-
335  const uint16_t nbits = kMitsubishiACBits,
-
336  const bool strict = false);
-
337 #endif
-
338 #if DECODE_MITSUBISHI136
-
339  bool decodeMitsubishi136(decode_results *results,
-
340  uint16_t offset = kStartOffset,
-
341  const uint16_t nbits = kMitsubishi136Bits,
-
342  const bool strict = true);
-
343 #endif
-
344 #if DECODE_MITSUBISHI112
-
345  bool decodeMitsubishi112(decode_results *results,
-
346  uint16_t offset = kStartOffset,
-
347  const uint16_t nbits = kMitsubishi112Bits,
-
348  const bool strict = true);
-
349 #endif
-
350 #if DECODE_MITSUBISHIHEAVY
- -
352  uint16_t offset = kStartOffset,
-
353  const uint16_t nbits = kMitsubishiHeavy152Bits,
-
354  const bool strict = true);
-
355 #endif
-
356 #if (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG || DECODE_MWM)
-
357  int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used,
-
358  uint16_t bitTime, const uint8_t tolerance = kUseDefTol,
-
359  const int16_t excess = kMarkExcess,
-
360  const uint16_t delta = 0, const uint8_t maxwidth = 3);
-
361 #endif
-
362 #if DECODE_RC5
-
363  bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset,
-
364  const uint16_t nbits = kRC5XBits,
-
365  const bool strict = true);
-
366 #endif
-
367 #if DECODE_RC6
-
368  bool decodeRC6(decode_results *results, uint16_t offset = kStartOffset,
-
369  const uint16_t nbits = kRC6Mode0Bits,
-
370  const bool strict = false);
-
371 #endif
-
372 #if DECODE_RCMM
-
373  bool decodeRCMM(decode_results *results, uint16_t offset = kStartOffset,
-
374  const uint16_t nbits = kRCMMBits,
-
375  const bool strict = false);
-
376 #endif
-
377 #if (DECODE_PANASONIC || DECODE_DENON)
-
378  bool decodePanasonic(decode_results *results, uint16_t offset = kStartOffset,
-
379  const uint16_t nbits = kPanasonicBits,
-
380  const bool strict = false,
-
381  const uint32_t manufacturer = kPanasonicManufacturer);
-
382 #endif
-
383 #if DECODE_LG
-
384  bool decodeLG(decode_results *results, uint16_t offset = kStartOffset,
-
385  const uint16_t nbits = kLgBits,
-
386  const bool strict = false);
-
387 #endif
-
388 #if DECODE_INAX
-
389  bool decodeInax(decode_results *results, uint16_t offset = kStartOffset,
-
390  const uint16_t nbits = kInaxBits,
-
391  const bool strict = true);
-
392 #endif // DECODE_INAX
-
393 #if DECODE_JVC
-
394  bool decodeJVC(decode_results *results, uint16_t offset = kStartOffset,
-
395  const uint16_t nbits = kJvcBits,
-
396  const bool strict = true);
-
397 #endif
-
398 #if DECODE_SAMSUNG
-
399  bool decodeSAMSUNG(decode_results *results, uint16_t offset = kStartOffset,
-
400  const uint16_t nbits = kSamsungBits,
-
401  const bool strict = true);
-
402 #endif
-
403 #if DECODE_SAMSUNG
-
404  bool decodeSamsung36(decode_results *results, uint16_t offset = kStartOffset,
-
405  const uint16_t nbits = kSamsung36Bits,
-
406  const bool strict = true);
-
407 #endif
-
408 #if DECODE_SAMSUNG_AC
-
409  bool decodeSamsungAC(decode_results *results, uint16_t offset = kStartOffset,
-
410  const uint16_t nbits = kSamsungAcBits,
-
411  const bool strict = true);
-
412 #endif
-
413 #if DECODE_WHYNTER
-
414  bool decodeWhynter(decode_results *results, uint16_t offset = kStartOffset,
-
415  const uint16_t nbits = kWhynterBits,
-
416  const bool strict = true);
-
417 #endif
-
418 #if DECODE_COOLIX
-
419  bool decodeCOOLIX(decode_results *results, uint16_t offset = kStartOffset,
-
420  const uint16_t nbits = kCoolixBits,
-
421  const bool strict = true);
-
422 #endif // DECODE_COOLIX
-
423 #if DECODE_COOLIX48
-
424  bool decodeCoolix48(decode_results *results, uint16_t offset = kStartOffset,
-
425  const uint16_t nbits = kCoolix48Bits,
-
426  const bool strict = true);
-
427 #endif // DECODE_COOLIX48
-
428 #if DECODE_DENON
-
429  bool decodeDenon(decode_results *results, uint16_t offset = kStartOffset,
-
430  const uint16_t nbits = kDenonBits,
-
431  const bool strict = true);
-
432 #endif
-
433 #if DECODE_DISH
-
434  bool decodeDISH(decode_results *results, uint16_t offset = kStartOffset,
-
435  const uint16_t nbits = kDishBits,
-
436  const bool strict = true);
-
437 #endif
-
438 #if (DECODE_SHARP || DECODE_DENON)
-
439  bool decodeSharp(decode_results *results, uint16_t offset = kStartOffset,
-
440  const uint16_t nbits = kSharpBits,
-
441  const bool strict = true, const bool expansion = true);
-
442 #endif
-
443 #if DECODE_SHARP_AC
-
444  bool decodeSharpAc(decode_results *results, uint16_t offset = kStartOffset,
-
445  const uint16_t nbits = kSharpAcBits,
-
446  const bool strict = true);
-
447 #endif
-
448 #if DECODE_AIWA_RC_T501
-
449  bool decodeAiwaRCT501(decode_results *results, uint16_t offset = kStartOffset,
-
450  const uint16_t nbits = kAiwaRcT501Bits,
-
451  const bool strict = true);
-
452 #endif
-
453 #if DECODE_NIKAI
-
454  bool decodeNikai(decode_results *results, uint16_t offset = kStartOffset,
-
455  const uint16_t nbits = kNikaiBits,
-
456  const bool strict = true);
-
457 #endif
-
458 #if DECODE_MAGIQUEST
-
459  bool decodeMagiQuest(decode_results *results, uint16_t offset = kStartOffset,
-
460  const uint16_t nbits = kMagiquestBits,
-
461  const bool strict = true);
-
462 #endif
-
463 #if DECODE_KELVINATOR
-
464  bool decodeKelvinator(decode_results *results, uint16_t offset = kStartOffset,
-
465  const uint16_t nbits = kKelvinatorBits,
-
466  const bool strict = true);
-
467 #endif
-
468 #if DECODE_DAIKIN
-
469  bool decodeDaikin(decode_results *results, uint16_t offset = kStartOffset,
-
470  const uint16_t nbits = kDaikinBits,
-
471  const bool strict = true);
-
472 #endif
-
473 #if DECODE_DAIKIN64
-
474  bool decodeDaikin64(decode_results *results, uint16_t offset = kStartOffset,
-
475  const uint16_t nbits = kDaikin64Bits,
-
476  const bool strict = true);
-
477 #endif // DECODE_DAIKIN64
-
478 #if DECODE_DAIKIN128
-
479  bool decodeDaikin128(decode_results *results, uint16_t offset = kStartOffset,
-
480  const uint16_t nbits = kDaikin128Bits,
-
481  const bool strict = true);
-
482 #endif // DECODE_DAIKIN128
-
483 #if DECODE_DAIKIN152
-
484  bool decodeDaikin152(decode_results *results, uint16_t offset = kStartOffset,
-
485  const uint16_t nbits = kDaikin152Bits,
-
486  const bool strict = true);
-
487 #endif // DECODE_DAIKIN152
-
488 #if DECODE_DAIKIN160
-
489  bool decodeDaikin160(decode_results *results, uint16_t offset = kStartOffset,
-
490  const uint16_t nbits = kDaikin160Bits,
-
491  const bool strict = true);
-
492 #endif // DECODE_DAIKIN160
-
493 #if DECODE_DAIKIN176
-
494  bool decodeDaikin176(decode_results *results, uint16_t offset = kStartOffset,
-
495  const uint16_t nbits = kDaikin176Bits,
-
496  const bool strict = true);
-
497 #endif // DECODE_DAIKIN176
-
498 #if DECODE_DAIKIN2
-
499  bool decodeDaikin2(decode_results *results, uint16_t offset = kStartOffset,
-
500  const uint16_t nbits = kDaikin2Bits,
-
501  const bool strict = true);
-
502 #endif
-
503 #if DECODE_DAIKIN216
-
504  bool decodeDaikin216(decode_results *results, uint16_t offset = kStartOffset,
-
505  const uint16_t nbits = kDaikin216Bits,
-
506  const bool strict = true);
-
507 #endif
-
508 #if DECODE_TOSHIBA_AC
-
509  bool decodeToshibaAC(decode_results *results, uint16_t offset = kStartOffset,
-
510  const uint16_t nbits = kToshibaACBits,
-
511  const bool strict = true);
-
512 #endif
-
513 #if DECODE_TROTEC
-
514  bool decodeTrotec(decode_results *results, uint16_t offset = kStartOffset,
-
515  const uint16_t nbits = kTrotecBits,
-
516  const bool strict = true);
-
517 #endif // DECODE_TROTEC
-
518 #if DECODE_TROTEC_3550
-
519  bool decodeTrotec3550(decode_results *results, uint16_t offset = kStartOffset,
-
520  const uint16_t nbits = kTrotecBits,
-
521  const bool strict = true);
-
522 #endif // DECODE_TROTEC_3550
-
523 #if DECODE_MIDEA
-
524  bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset,
-
525  const uint16_t nbits = kMideaBits,
-
526  const bool strict = true);
-
527 #endif // DECODE_MIDEA
-
528 #if DECODE_MIDEA24
-
529  bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset,
-
530  const uint16_t nbits = kMidea24Bits,
-
531  const bool strict = true);
-
532 #endif // DECODE_MIDEA24
-
533 #if DECODE_FUJITSU_AC
-
534  bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset,
-
535  const uint16_t nbits = kFujitsuAcBits,
-
536  const bool strict = false);
-
537 #endif
-
538 #if DECODE_LASERTAG
-
539  bool decodeLasertag(decode_results *results, uint16_t offset = kStartOffset,
-
540  const uint16_t nbits = kLasertagBits,
-
541  const bool strict = true);
-
542 #endif
-
543 #if DECODE_MILESTAG2
-
544  bool decodeMilestag2(decode_results *results, uint16_t offset = kStartOffset,
-
545  const uint16_t nbits = kMilesTag2ShotBits,
-
546  const bool strict = true);
-
547 #endif
-
548 #if DECODE_CARRIER_AC
-
549  bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
-
550  const uint16_t nbits = kCarrierAcBits,
-
551  const bool strict = true);
-
552 #endif // DECODE_CARRIER_AC
-
553 #if DECODE_CARRIER_AC40
-
554  bool decodeCarrierAC40(decode_results *results,
-
555  uint16_t offset = kStartOffset,
-
556  const uint16_t nbits = kCarrierAc40Bits,
-
557  const bool strict = true);
-
558 #endif // DECODE_CARRIER_AC40
-
559 #if DECODE_CARRIER_AC64
-
560  bool decodeCarrierAC64(decode_results *results,
-
561  uint16_t offset = kStartOffset,
-
562  const uint16_t nbits = kCarrierAc64Bits,
-
563  const bool strict = true);
-
564 #endif // DECODE_CARRIER_AC64
-
565 #if DECODE_GOODWEATHER
-
566  bool decodeGoodweather(decode_results *results,
-
567  uint16_t offset = kStartOffset,
-
568  const uint16_t nbits = kGoodweatherBits,
-
569  const bool strict = true);
-
570 #endif // DECODE_GOODWEATHER
-
571 #if DECODE_GREE
-
572  bool decodeGree(decode_results *results, uint16_t offset = kStartOffset,
-
573  const uint16_t nbits = kGreeBits,
-
574  const bool strict = true);
-
575 #endif
-
576 #if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02)
-
577  bool decodeHaierAC(decode_results *results, uint16_t offset = kStartOffset,
-
578  const uint16_t nbits = kHaierACBits,
-
579  const bool strict = true);
-
580 #endif
-
581 #if DECODE_HAIER_AC_YRW02
-
582  bool decodeHaierACYRW02(decode_results *results,
-
583  uint16_t offset = kStartOffset,
-
584  const uint16_t nbits = kHaierACYRW02Bits,
-
585  const bool strict = true);
-
586 #endif
-
587 #if DECODE_HAIER_AC176
-
588  bool decodeHaierAC176(decode_results *results,
-
589  uint16_t offset = kStartOffset,
-
590  const uint16_t nbits = kHaierAC176Bits,
-
591  const bool strict = true);
-
592 #endif // DECODE_HAIER_AC176
-
593 #if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC344)
-
594  bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset,
-
595  const uint16_t nbits = kHitachiAcBits,
-
596  const bool strict = true, const bool MSBfirst = true);
-
597 #endif
-
598 #if DECODE_HITACHI_AC1
-
599  bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset,
-
600  const uint16_t nbits = kHitachiAc1Bits,
-
601  const bool strict = true);
-
602 #endif
-
603 #if DECODE_HITACHI_AC3
-
604  bool decodeHitachiAc3(decode_results *results,
-
605  uint16_t offset = kStartOffset,
-
606  const uint16_t nbits = kHitachiAc3Bits,
-
607  const bool strict = true);
-
608 #endif // DECODE_HITACHI_AC3
-
609 #if DECODE_HITACHI_AC424
-
610  bool decodeHitachiAc424(decode_results *results,
-
611  uint16_t offset = kStartOffset,
-
612  const uint16_t nbits = kHitachiAc424Bits,
-
613  const bool strict = true);
-
614 #endif // DECODE_HITACHI_AC424
-
615 #if DECODE_GICABLE
-
616  bool decodeGICable(decode_results *results, uint16_t offset = kStartOffset,
-
617  const uint16_t nbits = kGicableBits,
-
618  const bool strict = true);
-
619 #endif
-
620 #if DECODE_WHIRLPOOL_AC
-
621  bool decodeWhirlpoolAC(decode_results *results,
-
622  uint16_t offset = kStartOffset,
-
623  const uint16_t nbits = kWhirlpoolAcBits,
-
624  const bool strict = true);
-
625 #endif
-
626 #if DECODE_LUTRON
-
627  bool decodeLutron(decode_results *results, uint16_t offset = kStartOffset,
-
628  const uint16_t nbits = kLutronBits,
-
629  const bool strict = true);
-
630 #endif
-
631 #if DECODE_ELECTRA_AC
-
632  bool decodeElectraAC(decode_results *results, uint16_t offset = kStartOffset,
-
633  const uint16_t nbits = kElectraAcBits,
-
634  const bool strict = true);
-
635 #endif
-
636 #if DECODE_PANASONIC_AC
-
637  bool decodePanasonicAC(decode_results *results,
-
638  uint16_t offset = kStartOffset,
-
639  const uint16_t nbits = kPanasonicAcBits,
-
640  const bool strict = true);
-
641 #endif // DECODE_PANASONIC_AC
-
642 #if DECODE_PANASONIC_AC32
-
643  bool decodePanasonicAC32(decode_results *results,
-
644  uint16_t offset = kStartOffset,
-
645  const uint16_t nbits = kPanasonicAc32Bits,
-
646  const bool strict = true);
-
647 #endif // DECODE_PANASONIC_AC32
-
648 #if DECODE_PIONEER
-
649  bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
-
650  const uint16_t nbits = kPioneerBits,
-
651  const bool strict = true);
-
652 #endif
-
653 #if DECODE_MWM
-
654  bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
-
655  const uint16_t nbits = 24,
-
656  const bool strict = true);
-
657 #endif
-
658 #if DECODE_VESTEL_AC
-
659  bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
-
660  const uint16_t nbits = kVestelAcBits,
-
661  const bool strict = true);
-
662 #endif
-
663 #if DECODE_TECO
-
664  bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
-
665  const uint16_t nbits = kTecoBits,
-
666  const bool strict = false);
+
90 typedef struct {
+
91  bool success; // Was the match successful?
+
92  uint64_t data; // The data found.
+
93  uint16_t used; // How many buffer positions were used.
+ +
95 
+
96 // Classes
+
97 
+ +
100  public:
+
101  decode_type_t decode_type; // NEC, SONY, RC5, UNKNOWN
+
102  // value, address, & command are all mutually exclusive with state.
+
103  // i.e. They MUST NOT be used at the same time as state, so we can use a union
+
104  // structure to save us a handful of valuable bytes of memory.
+
105  union {
+
106  struct {
+
107  uint64_t value; // Decoded value
+
108  uint32_t address; // Decoded device address.
+
109  uint32_t command; // Decoded command.
+
110  };
+
111  uint8_t state[kStateSizeMax]; // Multi-byte results.
+
112  };
+
113  uint16_t bits; // Number of bits in decoded value
+
114  volatile uint16_t *rawbuf; // Raw intervals in .5 us ticks
+
115  uint16_t rawlen; // Number of records in rawbuf.
+
116  bool overflow;
+
117  bool repeat; // Is the result a repeat code?
+
118 };
+
119 
+
121 class IRrecv {
+
122  public:
+
123 #if defined(ESP32)
+
124  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
+
125  const uint8_t timeout = kTimeoutMs,
+
126  const bool save_buffer = false,
+
127  const uint8_t timer_num = kDefaultESP32Timer); // Constructor
+
128 #else // ESP32
+
129  explicit IRrecv(const uint16_t recvpin, const uint16_t bufsize = kRawBuf,
+
130  const uint8_t timeout = kTimeoutMs,
+
131  const bool save_buffer = false); // Constructor
+
132 #endif // ESP32
+
133  ~IRrecv(void); // Destructor
+
134  void setTolerance(const uint8_t percent = kTolerance);
+
135  uint8_t getTolerance(void);
+
136  bool decode(decode_results *results, irparams_t *save = NULL,
+
137  uint8_t max_skip = 0, uint16_t noise_floor = 0);
+
138  void enableIRIn(const bool pullup = false);
+
139  void disableIRIn(void);
+
140  void resume(void);
+
141  uint16_t getBufSize(void);
+
142 #if DECODE_HASH
+
143  void setUnknownThreshold(const uint16_t length);
+
144 #endif
+
145  bool match(const uint32_t measured, const uint32_t desired,
+
146  const uint8_t tolerance = kUseDefTol,
+
147  const uint16_t delta = 0);
+
148  bool matchMark(const uint32_t measured, const uint32_t desired,
+
149  const uint8_t tolerance = kUseDefTol,
+
150  const int16_t excess = kMarkExcess);
+
151  bool matchMarkRange(const uint32_t measured, const uint32_t desired,
+
152  const uint16_t range = 100,
+
153  const int16_t excess = kMarkExcess);
+
154  bool matchSpace(const uint32_t measured, const uint32_t desired,
+
155  const uint8_t tolerance = kUseDefTol,
+
156  const int16_t excess = kMarkExcess);
+
157  bool matchSpaceRange(const uint32_t measured, const uint32_t desired,
+
158  const uint16_t range = 100,
+
159  const int16_t excess = kMarkExcess);
+
160 #ifndef UNIT_TEST
+
161 
+
162  private:
+
163 #endif
+ +
165  uint8_t _tolerance;
+
166 #if defined(ESP32)
+
167  uint8_t _timer_num;
+
168 #endif // defined(ESP32)
+
169 #if DECODE_HASH
+ +
171 #endif
+
172 #ifdef UNIT_TEST
+
173  volatile irparams_t *_getParamsPtr(void);
+
174 #endif // UNIT_TEST
+
175  // These are called by decode
+
176  uint8_t _validTolerance(const uint8_t percentage);
+
177  void copyIrParams(volatile irparams_t *src, irparams_t *dst);
+
178  uint16_t compare(const uint16_t oldval, const uint16_t newval);
+
179  uint32_t ticksLow(const uint32_t usecs,
+
180  const uint8_t tolerance = kUseDefTol,
+
181  const uint16_t delta = 0);
+
182  uint32_t ticksHigh(const uint32_t usecs,
+
183  const uint8_t tolerance = kUseDefTol,
+
184  const uint16_t delta = 0);
+
185  bool matchAtLeast(const uint32_t measured, const uint32_t desired,
+
186  const uint8_t tolerance = kUseDefTol,
+
187  const uint16_t delta = 0);
+
188  uint16_t _matchGeneric(volatile uint16_t *data_ptr,
+
189  uint64_t *result_bits_ptr,
+
190  uint8_t *result_ptr,
+
191  const bool use_bits,
+
192  const uint16_t remaining,
+
193  const uint16_t required,
+
194  const uint16_t hdrmark,
+
195  const uint32_t hdrspace,
+
196  const uint16_t onemark,
+
197  const uint32_t onespace,
+
198  const uint16_t zeromark,
+
199  const uint32_t zerospace,
+
200  const uint16_t footermark,
+
201  const uint32_t footerspace,
+
202  const bool atleast = false,
+
203  const uint8_t tolerance = kUseDefTol,
+
204  const int16_t excess = kMarkExcess,
+
205  const bool MSBfirst = true);
+
206  match_result_t matchData(volatile uint16_t *data_ptr, const uint16_t nbits,
+
207  const uint16_t onemark, const uint32_t onespace,
+
208  const uint16_t zeromark, const uint32_t zerospace,
+
209  const uint8_t tolerance = kUseDefTol,
+
210  const int16_t excess = kMarkExcess,
+
211  const bool MSBfirst = true,
+
212  const bool expectlastspace = true);
+
213  uint16_t matchBytes(volatile uint16_t *data_ptr, uint8_t *result_ptr,
+
214  const uint16_t remaining, const uint16_t nbytes,
+
215  const uint16_t onemark, const uint32_t onespace,
+
216  const uint16_t zeromark, const uint32_t zerospace,
+
217  const uint8_t tolerance = kUseDefTol,
+
218  const int16_t excess = kMarkExcess,
+
219  const bool MSBfirst = true,
+
220  const bool expectlastspace = true);
+
221  uint16_t matchGeneric(volatile uint16_t *data_ptr,
+
222  uint64_t *result_ptr,
+
223  const uint16_t remaining, const uint16_t nbits,
+
224  const uint16_t hdrmark, const uint32_t hdrspace,
+
225  const uint16_t onemark, const uint32_t onespace,
+
226  const uint16_t zeromark, const uint32_t zerospace,
+
227  const uint16_t footermark, const uint32_t footerspace,
+
228  const bool atleast = false,
+
229  const uint8_t tolerance = kUseDefTol,
+
230  const int16_t excess = kMarkExcess,
+
231  const bool MSBfirst = true);
+
232  uint16_t matchGeneric(volatile uint16_t *data_ptr, uint8_t *result_ptr,
+
233  const uint16_t remaining, const uint16_t nbits,
+
234  const uint16_t hdrmark, const uint32_t hdrspace,
+
235  const uint16_t onemark, const uint32_t onespace,
+
236  const uint16_t zeromark, const uint32_t zerospace,
+
237  const uint16_t footermark,
+
238  const uint32_t footerspace,
+
239  const bool atleast = false,
+
240  const uint8_t tolerance = kUseDefTol,
+
241  const int16_t excess = kMarkExcess,
+
242  const bool MSBfirst = true);
+
243  uint16_t matchGenericConstBitTime(volatile uint16_t *data_ptr,
+
244  uint64_t *result_ptr,
+
245  const uint16_t remaining,
+
246  const uint16_t nbits,
+
247  const uint16_t hdrmark,
+
248  const uint32_t hdrspace,
+
249  const uint16_t one,
+
250  const uint32_t zero,
+
251  const uint16_t footermark,
+
252  const uint32_t footerspace,
+
253  const bool atleast = false,
+
254  const uint8_t tolerance = kUseDefTol,
+
255  const int16_t excess = kMarkExcess,
+
256  const bool MSBfirst = true);
+
257  uint16_t matchManchesterData(volatile const uint16_t *data_ptr,
+
258  uint64_t *result_ptr,
+
259  const uint16_t remaining,
+
260  const uint16_t nbits,
+
261  const uint16_t half_period,
+
262  const uint16_t starting_balance = 0,
+
263  const uint8_t tolerance = kUseDefTol,
+
264  const int16_t excess = kMarkExcess,
+
265  const bool MSBfirst = true,
+
266  const bool GEThomas = true);
+
267  uint16_t matchManchester(volatile const uint16_t *data_ptr,
+
268  uint64_t *result_ptr,
+
269  const uint16_t remaining,
+
270  const uint16_t nbits,
+
271  const uint16_t hdrmark,
+
272  const uint32_t hdrspace,
+
273  const uint16_t clock_period,
+
274  const uint16_t footermark,
+
275  const uint32_t footerspace,
+
276  const bool atleast = false,
+
277  const uint8_t tolerance = kUseDefTol,
+
278  const int16_t excess = kMarkExcess,
+
279  const bool MSBfirst = true,
+
280  const bool GEThomas = true);
+
281  void crudeNoiseFilter(decode_results *results, const uint16_t floor = 0);
+
282  bool decodeHash(decode_results *results);
+
283 #if DECODE_VOLTAS
+
284  bool decodeVoltas(decode_results *results,
+
285  uint16_t offset = kStartOffset,
+
286  const uint16_t nbits = kVoltasBits,
+
287  const bool strict = true);
+
288 #endif // DECODE_VOLTAS
+
289 #if (DECODE_NEC || DECODE_SHERWOOD || DECODE_AIWA_RC_T501 || DECODE_SANYO)
+
290  bool decodeNEC(decode_results *results, uint16_t offset = kStartOffset,
+
291  const uint16_t nbits = kNECBits, const bool strict = true);
+
292 #endif
+
293 #if DECODE_ARGO
+
294  bool decodeArgo(decode_results *results, uint16_t offset = kStartOffset,
+
295  const uint16_t nbits = kArgoBits, const bool strict = true);
+
296 #endif // DECODE_ARGO
+
297 #if DECODE_ARRIS
+
298  bool decodeArris(decode_results *results, uint16_t offset = kStartOffset,
+
299  const uint16_t nbits = kArrisBits, const bool strict = true);
+
300 #endif // DECODE_ARRIS
+
301 #if DECODE_SONY
+
302  bool decodeSony(decode_results *results, uint16_t offset = kStartOffset,
+
303  const uint16_t nbits = kSonyMinBits,
+
304  const bool strict = false);
+
305 #endif
+
306 #if DECODE_SANYO
+
307  // DISABLED due to poor quality.
+
308  // bool decodeSanyo(decode_results *results, uint16_t offset = kStartOffset,
+
309  // uint16_t nbits = kSanyoSA8650BBits,
+
310  // bool strict = false);
+
311  bool decodeSanyoLC7461(decode_results *results,
+
312  uint16_t offset = kStartOffset,
+
313  const uint16_t nbits = kSanyoLC7461Bits,
+
314  const bool strict = true);
+
315 #endif
+
316 #if DECODE_SANYO_AC
+
317  bool decodeSanyoAc(decode_results *results,
+
318  uint16_t offset = kStartOffset,
+
319  const uint16_t nbits = kSanyoAcBits,
+
320  const bool strict = true);
+
321 #endif // DECODE_SANYO_AC
+
322 #if DECODE_SANYO_AC88
+
323  bool decodeSanyoAc88(decode_results *results,
+
324  uint16_t offset = kStartOffset,
+
325  const uint16_t nbits = kSanyoAc88Bits,
+
326  const bool strict = true);
+
327 #endif // DECODE_SANYO_AC88
+
328 #if DECODE_MITSUBISHI
+
329  bool decodeMitsubishi(decode_results *results, uint16_t offset = kStartOffset,
+
330  const uint16_t nbits = kMitsubishiBits,
+
331  const bool strict = true);
+
332 #endif
+
333 #if DECODE_MITSUBISHI2
+
334  bool decodeMitsubishi2(decode_results *results,
+
335  uint16_t offset = kStartOffset,
+
336  const uint16_t nbits = kMitsubishiBits,
+
337  const bool strict = true);
+
338 #endif
+
339 #if DECODE_MITSUBISHI_AC
+
340  bool decodeMitsubishiAC(decode_results *results,
+
341  uint16_t offset = kStartOffset,
+
342  const uint16_t nbits = kMitsubishiACBits,
+
343  const bool strict = false);
+
344 #endif
+
345 #if DECODE_MITSUBISHI136
+
346  bool decodeMitsubishi136(decode_results *results,
+
347  uint16_t offset = kStartOffset,
+
348  const uint16_t nbits = kMitsubishi136Bits,
+
349  const bool strict = true);
+
350 #endif
+
351 #if DECODE_MITSUBISHI112
+
352  bool decodeMitsubishi112(decode_results *results,
+
353  uint16_t offset = kStartOffset,
+
354  const uint16_t nbits = kMitsubishi112Bits,
+
355  const bool strict = true);
+
356 #endif
+
357 #if DECODE_MITSUBISHIHEAVY
+ +
359  uint16_t offset = kStartOffset,
+
360  const uint16_t nbits = kMitsubishiHeavy152Bits,
+
361  const bool strict = true);
+
362 #endif
+
363 #if (DECODE_RC5 || DECODE_RC6 || DECODE_LASERTAG || DECODE_MWM)
+
364  int16_t getRClevel(decode_results *results, uint16_t *offset, uint16_t *used,
+
365  uint16_t bitTime, const uint8_t tolerance = kUseDefTol,
+
366  const int16_t excess = kMarkExcess,
+
367  const uint16_t delta = 0, const uint8_t maxwidth = 3);
+
368 #endif
+
369 #if DECODE_RC5
+
370  bool decodeRC5(decode_results *results, uint16_t offset = kStartOffset,
+
371  const uint16_t nbits = kRC5XBits,
+
372  const bool strict = true);
+
373 #endif
+
374 #if DECODE_RC6
+
375  bool decodeRC6(decode_results *results, uint16_t offset = kStartOffset,
+
376  const uint16_t nbits = kRC6Mode0Bits,
+
377  const bool strict = false);
+
378 #endif
+
379 #if DECODE_RCMM
+
380  bool decodeRCMM(decode_results *results, uint16_t offset = kStartOffset,
+
381  const uint16_t nbits = kRCMMBits,
+
382  const bool strict = false);
+
383 #endif
+
384 #if (DECODE_PANASONIC || DECODE_DENON)
+
385  bool decodePanasonic(decode_results *results, uint16_t offset = kStartOffset,
+
386  const uint16_t nbits = kPanasonicBits,
+
387  const bool strict = false,
+
388  const uint32_t manufacturer = kPanasonicManufacturer);
+
389 #endif
+
390 #if DECODE_LG
+
391  bool decodeLG(decode_results *results, uint16_t offset = kStartOffset,
+
392  const uint16_t nbits = kLgBits,
+
393  const bool strict = false);
+
394 #endif
+
395 #if DECODE_INAX
+
396  bool decodeInax(decode_results *results, uint16_t offset = kStartOffset,
+
397  const uint16_t nbits = kInaxBits,
+
398  const bool strict = true);
+
399 #endif // DECODE_INAX
+
400 #if DECODE_JVC
+
401  bool decodeJVC(decode_results *results, uint16_t offset = kStartOffset,
+
402  const uint16_t nbits = kJvcBits,
+
403  const bool strict = true);
+
404 #endif
+
405 #if DECODE_SAMSUNG
+
406  bool decodeSAMSUNG(decode_results *results, uint16_t offset = kStartOffset,
+
407  const uint16_t nbits = kSamsungBits,
+
408  const bool strict = true);
+
409 #endif
+
410 #if DECODE_SAMSUNG
+
411  bool decodeSamsung36(decode_results *results, uint16_t offset = kStartOffset,
+
412  const uint16_t nbits = kSamsung36Bits,
+
413  const bool strict = true);
+
414 #endif
+
415 #if DECODE_SAMSUNG_AC
+
416  bool decodeSamsungAC(decode_results *results, uint16_t offset = kStartOffset,
+
417  const uint16_t nbits = kSamsungAcBits,
+
418  const bool strict = true);
+
419 #endif
+
420 #if DECODE_WHYNTER
+
421  bool decodeWhynter(decode_results *results, uint16_t offset = kStartOffset,
+
422  const uint16_t nbits = kWhynterBits,
+
423  const bool strict = true);
+
424 #endif
+
425 #if DECODE_COOLIX
+
426  bool decodeCOOLIX(decode_results *results, uint16_t offset = kStartOffset,
+
427  const uint16_t nbits = kCoolixBits,
+
428  const bool strict = true);
+
429 #endif // DECODE_COOLIX
+
430 #if DECODE_COOLIX48
+
431  bool decodeCoolix48(decode_results *results, uint16_t offset = kStartOffset,
+
432  const uint16_t nbits = kCoolix48Bits,
+
433  const bool strict = true);
+
434 #endif // DECODE_COOLIX48
+
435 #if DECODE_DENON
+
436  bool decodeDenon(decode_results *results, uint16_t offset = kStartOffset,
+
437  const uint16_t nbits = kDenonBits,
+
438  const bool strict = true);
+
439 #endif
+
440 #if DECODE_DISH
+
441  bool decodeDISH(decode_results *results, uint16_t offset = kStartOffset,
+
442  const uint16_t nbits = kDishBits,
+
443  const bool strict = true);
+
444 #endif
+
445 #if (DECODE_SHARP || DECODE_DENON)
+
446  bool decodeSharp(decode_results *results, uint16_t offset = kStartOffset,
+
447  const uint16_t nbits = kSharpBits,
+
448  const bool strict = true, const bool expansion = true);
+
449 #endif
+
450 #if DECODE_SHARP_AC
+
451  bool decodeSharpAc(decode_results *results, uint16_t offset = kStartOffset,
+
452  const uint16_t nbits = kSharpAcBits,
+
453  const bool strict = true);
+
454 #endif
+
455 #if DECODE_AIWA_RC_T501
+
456  bool decodeAiwaRCT501(decode_results *results, uint16_t offset = kStartOffset,
+
457  const uint16_t nbits = kAiwaRcT501Bits,
+
458  const bool strict = true);
+
459 #endif
+
460 #if DECODE_NIKAI
+
461  bool decodeNikai(decode_results *results, uint16_t offset = kStartOffset,
+
462  const uint16_t nbits = kNikaiBits,
+
463  const bool strict = true);
+
464 #endif
+
465 #if DECODE_MAGIQUEST
+
466  bool decodeMagiQuest(decode_results *results, uint16_t offset = kStartOffset,
+
467  const uint16_t nbits = kMagiquestBits,
+
468  const bool strict = true);
+
469 #endif
+
470 #if DECODE_KELVINATOR
+
471  bool decodeKelvinator(decode_results *results, uint16_t offset = kStartOffset,
+
472  const uint16_t nbits = kKelvinatorBits,
+
473  const bool strict = true);
+
474 #endif
+
475 #if DECODE_DAIKIN
+
476  bool decodeDaikin(decode_results *results, uint16_t offset = kStartOffset,
+
477  const uint16_t nbits = kDaikinBits,
+
478  const bool strict = true);
+
479 #endif
+
480 #if DECODE_DAIKIN64
+
481  bool decodeDaikin64(decode_results *results, uint16_t offset = kStartOffset,
+
482  const uint16_t nbits = kDaikin64Bits,
+
483  const bool strict = true);
+
484 #endif // DECODE_DAIKIN64
+
485 #if DECODE_DAIKIN128
+
486  bool decodeDaikin128(decode_results *results, uint16_t offset = kStartOffset,
+
487  const uint16_t nbits = kDaikin128Bits,
+
488  const bool strict = true);
+
489 #endif // DECODE_DAIKIN128
+
490 #if DECODE_DAIKIN152
+
491  bool decodeDaikin152(decode_results *results, uint16_t offset = kStartOffset,
+
492  const uint16_t nbits = kDaikin152Bits,
+
493  const bool strict = true);
+
494 #endif // DECODE_DAIKIN152
+
495 #if DECODE_DAIKIN160
+
496  bool decodeDaikin160(decode_results *results, uint16_t offset = kStartOffset,
+
497  const uint16_t nbits = kDaikin160Bits,
+
498  const bool strict = true);
+
499 #endif // DECODE_DAIKIN160
+
500 #if DECODE_DAIKIN176
+
501  bool decodeDaikin176(decode_results *results, uint16_t offset = kStartOffset,
+
502  const uint16_t nbits = kDaikin176Bits,
+
503  const bool strict = true);
+
504 #endif // DECODE_DAIKIN176
+
505 #if DECODE_DAIKIN2
+
506  bool decodeDaikin2(decode_results *results, uint16_t offset = kStartOffset,
+
507  const uint16_t nbits = kDaikin2Bits,
+
508  const bool strict = true);
+
509 #endif
+
510 #if DECODE_DAIKIN216
+
511  bool decodeDaikin216(decode_results *results, uint16_t offset = kStartOffset,
+
512  const uint16_t nbits = kDaikin216Bits,
+
513  const bool strict = true);
+
514 #endif
+
515 #if DECODE_TOSHIBA_AC
+
516  bool decodeToshibaAC(decode_results *results, uint16_t offset = kStartOffset,
+
517  const uint16_t nbits = kToshibaACBits,
+
518  const bool strict = true);
+
519 #endif
+
520 #if DECODE_TROTEC
+
521  bool decodeTrotec(decode_results *results, uint16_t offset = kStartOffset,
+
522  const uint16_t nbits = kTrotecBits,
+
523  const bool strict = true);
+
524 #endif // DECODE_TROTEC
+
525 #if DECODE_TROTEC_3550
+
526  bool decodeTrotec3550(decode_results *results, uint16_t offset = kStartOffset,
+
527  const uint16_t nbits = kTrotecBits,
+
528  const bool strict = true);
+
529 #endif // DECODE_TROTEC_3550
+
530 #if DECODE_MIDEA
+
531  bool decodeMidea(decode_results *results, uint16_t offset = kStartOffset,
+
532  const uint16_t nbits = kMideaBits,
+
533  const bool strict = true);
+
534 #endif // DECODE_MIDEA
+
535 #if DECODE_MIDEA24
+
536  bool decodeMidea24(decode_results *results, uint16_t offset = kStartOffset,
+
537  const uint16_t nbits = kMidea24Bits,
+
538  const bool strict = true);
+
539 #endif // DECODE_MIDEA24
+
540 #if DECODE_FUJITSU_AC
+
541  bool decodeFujitsuAC(decode_results *results, uint16_t offset = kStartOffset,
+
542  const uint16_t nbits = kFujitsuAcBits,
+
543  const bool strict = false);
+
544 #endif
+
545 #if DECODE_LASERTAG
+
546  bool decodeLasertag(decode_results *results, uint16_t offset = kStartOffset,
+
547  const uint16_t nbits = kLasertagBits,
+
548  const bool strict = true);
+
549 #endif
+
550 #if DECODE_MILESTAG2
+
551  bool decodeMilestag2(decode_results *results, uint16_t offset = kStartOffset,
+
552  const uint16_t nbits = kMilesTag2ShotBits,
+
553  const bool strict = true);
+
554 #endif
+
555 #if DECODE_CARRIER_AC
+
556  bool decodeCarrierAC(decode_results *results, uint16_t offset = kStartOffset,
+
557  const uint16_t nbits = kCarrierAcBits,
+
558  const bool strict = true);
+
559 #endif // DECODE_CARRIER_AC
+
560 #if DECODE_CARRIER_AC40
+
561  bool decodeCarrierAC40(decode_results *results,
+
562  uint16_t offset = kStartOffset,
+
563  const uint16_t nbits = kCarrierAc40Bits,
+
564  const bool strict = true);
+
565 #endif // DECODE_CARRIER_AC40
+
566 #if DECODE_CARRIER_AC64
+
567  bool decodeCarrierAC64(decode_results *results,
+
568  uint16_t offset = kStartOffset,
+
569  const uint16_t nbits = kCarrierAc64Bits,
+
570  const bool strict = true);
+
571 #endif // DECODE_CARRIER_AC64
+
572 #if DECODE_GOODWEATHER
+
573  bool decodeGoodweather(decode_results *results,
+
574  uint16_t offset = kStartOffset,
+
575  const uint16_t nbits = kGoodweatherBits,
+
576  const bool strict = true);
+
577 #endif // DECODE_GOODWEATHER
+
578 #if DECODE_GREE
+
579  bool decodeGree(decode_results *results, uint16_t offset = kStartOffset,
+
580  const uint16_t nbits = kGreeBits,
+
581  const bool strict = true);
+
582 #endif
+
583 #if (DECODE_HAIER_AC | DECODE_HAIER_AC_YRW02)
+
584  bool decodeHaierAC(decode_results *results, uint16_t offset = kStartOffset,
+
585  const uint16_t nbits = kHaierACBits,
+
586  const bool strict = true);
+
587 #endif
+
588 #if DECODE_HAIER_AC_YRW02
+
589  bool decodeHaierACYRW02(decode_results *results,
+
590  uint16_t offset = kStartOffset,
+
591  const uint16_t nbits = kHaierACYRW02Bits,
+
592  const bool strict = true);
+
593 #endif
+
594 #if DECODE_HAIER_AC176
+
595  bool decodeHaierAC176(decode_results *results,
+
596  uint16_t offset = kStartOffset,
+
597  const uint16_t nbits = kHaierAC176Bits,
+
598  const bool strict = true);
+
599 #endif // DECODE_HAIER_AC176
+
600 #if (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC264 || \
+
601  DECODE_HITACHI_AC344)
+
602  bool decodeHitachiAC(decode_results *results, uint16_t offset = kStartOffset,
+
603  const uint16_t nbits = kHitachiAcBits,
+
604  const bool strict = true, const bool MSBfirst = true);
+
605 #endif // (DECODE_HITACHI_AC || DECODE_HITACHI_AC2 || DECODE_HITACHI_AC264 ||
+
606  // DECODE_HITACHI_AC344)
+
607 #if DECODE_HITACHI_AC1
+
608  bool decodeHitachiAC1(decode_results *results, uint16_t offset = kStartOffset,
+
609  const uint16_t nbits = kHitachiAc1Bits,
+
610  const bool strict = true);
+
611 #endif
+
612 #if DECODE_HITACHI_AC3
+
613  bool decodeHitachiAc3(decode_results *results,
+
614  uint16_t offset = kStartOffset,
+
615  const uint16_t nbits = kHitachiAc3Bits,
+
616  const bool strict = true);
+
617 #endif // DECODE_HITACHI_AC3
+
618 #if DECODE_HITACHI_AC296
+
619  bool decodeHitachiAc296(decode_results *results,
+
620  uint16_t offset = kStartOffset,
+
621  const uint16_t nbits = kHitachiAc296Bits,
+
622  const bool strict = true);
+
623 #endif // DECODE_HITACHI_AC296
+
624 #if DECODE_HITACHI_AC424
+
625  bool decodeHitachiAc424(decode_results *results,
+
626  uint16_t offset = kStartOffset,
+
627  const uint16_t nbits = kHitachiAc424Bits,
+
628  const bool strict = true);
+
629 #endif // DECODE_HITACHI_AC424
+
630 #if DECODE_GICABLE
+
631  bool decodeGICable(decode_results *results, uint16_t offset = kStartOffset,
+
632  const uint16_t nbits = kGicableBits,
+
633  const bool strict = true);
+
634 #endif
+
635 #if DECODE_WHIRLPOOL_AC
+
636  bool decodeWhirlpoolAC(decode_results *results,
+
637  uint16_t offset = kStartOffset,
+
638  const uint16_t nbits = kWhirlpoolAcBits,
+
639  const bool strict = true);
+
640 #endif
+
641 #if DECODE_LUTRON
+
642  bool decodeLutron(decode_results *results, uint16_t offset = kStartOffset,
+
643  const uint16_t nbits = kLutronBits,
+
644  const bool strict = true);
+
645 #endif
+
646 #if DECODE_ELECTRA_AC
+
647  bool decodeElectraAC(decode_results *results, uint16_t offset = kStartOffset,
+
648  const uint16_t nbits = kElectraAcBits,
+
649  const bool strict = true);
+
650 #endif
+
651 #if DECODE_PANASONIC_AC
+
652  bool decodePanasonicAC(decode_results *results,
+
653  uint16_t offset = kStartOffset,
+
654  const uint16_t nbits = kPanasonicAcBits,
+
655  const bool strict = true);
+
656 #endif // DECODE_PANASONIC_AC
+
657 #if DECODE_PANASONIC_AC32
+
658  bool decodePanasonicAC32(decode_results *results,
+
659  uint16_t offset = kStartOffset,
+
660  const uint16_t nbits = kPanasonicAc32Bits,
+
661  const bool strict = true);
+
662 #endif // DECODE_PANASONIC_AC32
+
663 #if DECODE_PIONEER
+
664  bool decodePioneer(decode_results *results, uint16_t offset = kStartOffset,
+
665  const uint16_t nbits = kPioneerBits,
+
666  const bool strict = true);
667 #endif
-
668 #if DECODE_LEGOPF
-
669  bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
-
670  const uint16_t nbits = kLegoPfBits,
-
671  const bool strict = true);
+
668 #if DECODE_MWM
+
669  bool decodeMWM(decode_results *results, uint16_t offset = kStartOffset,
+
670  const uint16_t nbits = 24,
+
671  const bool strict = true);
672 #endif
-
673 #if DECODE_NEOCLIMA
-
674  bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
-
675  const uint16_t nbits = kNeoclimaBits,
+
673 #if DECODE_VESTEL_AC
+
674  bool decodeVestelAc(decode_results *results, uint16_t offset = kStartOffset,
+
675  const uint16_t nbits = kVestelAcBits,
676  const bool strict = true);
-
677 #endif // DECODE_NEOCLIMA
-
678 #if DECODE_AMCOR
-
679  bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
-
680  const uint16_t nbits = kAmcorBits,
-
681  const bool strict = true);
-
682 #endif // DECODE_AMCOR
-
683 #if DECODE_EPSON
-
684  bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
-
685  const uint16_t nbits = kEpsonBits,
-
686  const bool strict = true);
-
687 #endif // DECODE_EPSON
-
688 #if DECODE_SYMPHONY
-
689  bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
-
690  const uint16_t nbits = kSymphonyBits,
-
691  const bool strict = true);
-
692 #endif // DECODE_SYMPHONY
-
693 #if DECODE_AIRWELL
-
694  bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
-
695  const uint16_t nbits = kAirwellBits,
-
696  const bool strict = true);
-
697 #endif // DECODE_AIRWELL
-
698 #if DECODE_DELONGHI_AC
-
699  bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
-
700  const uint16_t nbits = kDelonghiAcBits,
-
701  const bool strict = true);
-
702 #endif // DECODE_DELONGHI_AC
-
703 #if DECODE_DOSHISHA
-
704  bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
-
705  const uint16_t nbits = kDoshishaBits,
-
706  const bool strict = true);
-
707 #endif // DECODE_DOSHISHA
-
708 #if DECODE_MULTIBRACKETS
-
709  bool decodeMultibrackets(decode_results *results,
-
710  uint16_t offset = kStartOffset,
-
711  const uint16_t nbits = kMultibracketsBits,
-
712  const bool strict = true);
-
713 #endif // DECODE_MULTIBRACKETS
-
714 #if DECODE_TECHNIBEL_AC
-
715  bool decodeTechnibelAc(decode_results *results,
-
716  uint16_t offset = kStartOffset,
-
717  const uint16_t nbits = kTechnibelAcBits,
-
718  const bool strict = true);
-
719 #endif // DECODE_TECHNIBEL_AC
-
720 #if DECODE_CORONA_AC
-
721  bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
-
722  const uint16_t nbits = kCoronaAcBitsShort,
-
723  const bool strict = true);
-
724 #endif // DECODE_CORONA_AC
-
725 #if DECODE_ZEPEAL
-
726  bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
-
727  const uint16_t nbits = kZepealBits,
-
728  const bool strict = true);
-
729 #endif // DECODE_ZEPEAL
-
730 #if DECODE_METZ
-
731  bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
-
732  const uint16_t nbits = kMetzBits,
-
733  const bool strict = true);
-
734 #endif // DECODE_METZ
-
735 #if DECODE_TRANSCOLD
-
736  bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
-
737  const uint16_t nbits = kTranscoldBits,
-
738  const bool strict = true);
-
739 #endif // DECODE_TRANSCOLD
-
740 #if DECODE_MIRAGE
-
741  bool decodeMirage(decode_results *results,
-
742  uint16_t offset = kStartOffset,
-
743  const uint16_t nbits = kMirageBits,
-
744  const bool strict = true);
-
745 #endif // DECODE_MIRAGE
-
746 #if DECODE_ELITESCREENS
-
747  bool decodeElitescreens(decode_results *results,
-
748  uint16_t offset = kStartOffset,
-
749  const uint16_t nbits = kEliteScreensBits,
-
750  const bool strict = true);
-
751 #endif // DECODE_ELITESCREENS
-
752 #if DECODE_ECOCLIM
-
753  bool decodeEcoclim(decode_results *results, uint16_t offset = kStartOffset,
-
754  const uint16_t nbits = kEcoclimBits,
-
755  const bool strict = true);
-
756 #endif // DECODE_ECOCLIM
-
757 #if DECODE_XMP
-
758  bool decodeXmp(decode_results *results, uint16_t offset = kStartOffset,
-
759  const uint16_t nbits = kXmpBits, const bool strict = true);
-
760 #endif // DECODE_XMP
-
761 #if DECODE_TRUMA
-
762  bool decodeTruma(decode_results *results, uint16_t offset = kStartOffset,
-
763  const uint16_t nbits = kTrumaBits, const bool strict = true);
-
764 #endif // DECODE_TRUMA
-
765 #if DECODE_TEKNOPOINT
-
766  bool decodeTeknopoint(decode_results *results, uint16_t offset = kStartOffset,
-
767  const uint16_t nbits = kTeknopointBits,
-
768  const bool strict = true);
-
769 #endif // DECODE_TEKNOPOINT
-
770 #if DECODE_KELON
-
771  bool decodeKelon(decode_results *results, uint16_t offset = kStartOffset,
-
772  const uint16_t nbits = kKelonBits, const bool strict = true);
-
773 #endif // DECODE_KELON
-
774 #if DECODE_BOSE
-
775  bool decodeBose(decode_results *results, uint16_t offset = kStartOffset,
-
776  const uint16_t nbits = kBoseBits, const bool strict = true);
-
777 #endif // DECODE_BOSE
-
778 #if DECODE_RHOSS
-
779  bool decodeRhoss(decode_results *results, uint16_t offset = kStartOffset,
-
780  const uint16_t nbits = kRhossBits, const bool strict = true);
-
781 #endif // DECODE_RHOSS
-
782 #if DECODE_AIRTON
-
783  bool decodeAirton(decode_results *results, uint16_t offset = kStartOffset,
-
784  const uint16_t nbits = kAirtonBits,
-
785  const bool strict = true);
-
786 #endif // DECODE_AIRTON
-
787 };
-
788 
-
789 #endif // IRRECV_H_
+
677 #endif
+
678 #if DECODE_TECO
+
679  bool decodeTeco(decode_results *results, uint16_t offset = kStartOffset,
+
680  const uint16_t nbits = kTecoBits,
+
681  const bool strict = false);
+
682 #endif
+
683 #if DECODE_LEGOPF
+
684  bool decodeLegoPf(decode_results *results, uint16_t offset = kStartOffset,
+
685  const uint16_t nbits = kLegoPfBits,
+
686  const bool strict = true);
+
687 #endif
+
688 #if DECODE_NEOCLIMA
+
689  bool decodeNeoclima(decode_results *results, uint16_t offset = kStartOffset,
+
690  const uint16_t nbits = kNeoclimaBits,
+
691  const bool strict = true);
+
692 #endif // DECODE_NEOCLIMA
+
693 #if DECODE_AMCOR
+
694  bool decodeAmcor(decode_results *results, uint16_t offset = kStartOffset,
+
695  const uint16_t nbits = kAmcorBits,
+
696  const bool strict = true);
+
697 #endif // DECODE_AMCOR
+
698 #if DECODE_EPSON
+
699  bool decodeEpson(decode_results *results, uint16_t offset = kStartOffset,
+
700  const uint16_t nbits = kEpsonBits,
+
701  const bool strict = true);
+
702 #endif // DECODE_EPSON
+
703 #if DECODE_SYMPHONY
+
704  bool decodeSymphony(decode_results *results, uint16_t offset = kStartOffset,
+
705  const uint16_t nbits = kSymphonyBits,
+
706  const bool strict = true);
+
707 #endif // DECODE_SYMPHONY
+
708 #if DECODE_AIRWELL
+
709  bool decodeAirwell(decode_results *results, uint16_t offset = kStartOffset,
+
710  const uint16_t nbits = kAirwellBits,
+
711  const bool strict = true);
+
712 #endif // DECODE_AIRWELL
+
713 #if DECODE_DELONGHI_AC
+
714  bool decodeDelonghiAc(decode_results *results, uint16_t offset = kStartOffset,
+
715  const uint16_t nbits = kDelonghiAcBits,
+
716  const bool strict = true);
+
717 #endif // DECODE_DELONGHI_AC
+
718 #if DECODE_DOSHISHA
+
719  bool decodeDoshisha(decode_results *results, uint16_t offset = kStartOffset,
+
720  const uint16_t nbits = kDoshishaBits,
+
721  const bool strict = true);
+
722 #endif // DECODE_DOSHISHA
+
723 #if DECODE_MULTIBRACKETS
+
724  bool decodeMultibrackets(decode_results *results,
+
725  uint16_t offset = kStartOffset,
+
726  const uint16_t nbits = kMultibracketsBits,
+
727  const bool strict = true);
+
728 #endif // DECODE_MULTIBRACKETS
+
729 #if DECODE_TECHNIBEL_AC
+
730  bool decodeTechnibelAc(decode_results *results,
+
731  uint16_t offset = kStartOffset,
+
732  const uint16_t nbits = kTechnibelAcBits,
+
733  const bool strict = true);
+
734 #endif // DECODE_TECHNIBEL_AC
+
735 #if DECODE_CORONA_AC
+
736  bool decodeCoronaAc(decode_results *results, uint16_t offset = kStartOffset,
+
737  const uint16_t nbits = kCoronaAcBitsShort,
+
738  const bool strict = true);
+
739 #endif // DECODE_CORONA_AC
+
740 #if DECODE_ZEPEAL
+
741  bool decodeZepeal(decode_results *results, uint16_t offset = kStartOffset,
+
742  const uint16_t nbits = kZepealBits,
+
743  const bool strict = true);
+
744 #endif // DECODE_ZEPEAL
+
745 #if DECODE_METZ
+
746  bool decodeMetz(decode_results *results, uint16_t offset = kStartOffset,
+
747  const uint16_t nbits = kMetzBits,
+
748  const bool strict = true);
+
749 #endif // DECODE_METZ
+
750 #if DECODE_TRANSCOLD
+
751  bool decodeTranscold(decode_results *results, uint16_t offset = kStartOffset,
+
752  const uint16_t nbits = kTranscoldBits,
+
753  const bool strict = true);
+
754 #endif // DECODE_TRANSCOLD
+
755 #if DECODE_MIRAGE
+
756  bool decodeMirage(decode_results *results,
+
757  uint16_t offset = kStartOffset,
+
758  const uint16_t nbits = kMirageBits,
+
759  const bool strict = true);
+
760 #endif // DECODE_MIRAGE
+
761 #if DECODE_ELITESCREENS
+
762  bool decodeElitescreens(decode_results *results,
+
763  uint16_t offset = kStartOffset,
+
764  const uint16_t nbits = kEliteScreensBits,
+
765  const bool strict = true);
+
766 #endif // DECODE_ELITESCREENS
+
767 #if DECODE_ECOCLIM
+
768  bool decodeEcoclim(decode_results *results, uint16_t offset = kStartOffset,
+
769  const uint16_t nbits = kEcoclimBits,
+
770  const bool strict = true);
+
771 #endif // DECODE_ECOCLIM
+
772 #if DECODE_XMP
+
773  bool decodeXmp(decode_results *results, uint16_t offset = kStartOffset,
+
774  const uint16_t nbits = kXmpBits, const bool strict = true);
+
775 #endif // DECODE_XMP
+
776 #if DECODE_TRUMA
+
777  bool decodeTruma(decode_results *results, uint16_t offset = kStartOffset,
+
778  const uint16_t nbits = kTrumaBits, const bool strict = true);
+
779 #endif // DECODE_TRUMA
+
780 #if DECODE_TEKNOPOINT
+
781  bool decodeTeknopoint(decode_results *results, uint16_t offset = kStartOffset,
+
782  const uint16_t nbits = kTeknopointBits,
+
783  const bool strict = true);
+
784 #endif // DECODE_TEKNOPOINT
+
785 #if DECODE_KELON
+
786  bool decodeKelon(decode_results *results, uint16_t offset = kStartOffset,
+
787  const uint16_t nbits = kKelonBits, const bool strict = true);
+
788 #endif // DECODE_KELON
+
789 #if DECODE_KELON168
+
790  bool decodeKelon168(decode_results *results, uint16_t offset = kStartOffset,
+
791  const uint16_t nbits = kKelon168Bits,
+
792  const bool strict = true);
+
793 #endif // DECODE_KELON168
+
794 #if DECODE_BOSE
+
795  bool decodeBose(decode_results *results, uint16_t offset = kStartOffset,
+
796  const uint16_t nbits = kBoseBits, const bool strict = true);
+
797 #endif // DECODE_BOSE
+
798 #if DECODE_RHOSS
+
799  bool decodeRhoss(decode_results *results, uint16_t offset = kStartOffset,
+
800  const uint16_t nbits = kRhossBits, const bool strict = true);
+
801 #endif // DECODE_RHOSS
+
802 #if DECODE_AIRTON
+
803  bool decodeAirton(decode_results *results, uint16_t offset = kStartOffset,
+
804  const uint16_t nbits = kAirtonBits,
+
805  const bool strict = true);
+
806 #endif // DECODE_AIRTON
+
807 };
+
808 
+
809 #endif // IRRECV_H_
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
-
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:1399
+
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:1429
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
-
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:1067
+
const uint16_t kDelonghiAcBits
Definition: IRremoteESP8266.h:1093
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
-
const uint16_t kRhossBits
Definition: IRremoteESP8266.h:1256
-
const uint16_t kMirageBits
Definition: IRremoteESP8266.h:1145
+
const uint16_t kRhossBits
Definition: IRremoteESP8266.h:1288
+
const uint16_t kMirageBits
Definition: IRremoteESP8266.h:1177
+
bool decodeKelon168(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kKelon168Bits, const bool strict=true)
Decode the supplied Kelon 168 bit / 21 byte message. Status: BETA / Probably Working.
Definition: ir_Kelon.cpp:505
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:1336
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
const uint32_t kFnvPrime32
Definition: IRrecv.h:52
-
bool overflow
Definition: IRrecv.h:109
+
bool overflow
Definition: IRrecv.h:116
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
-
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:1091
-
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:1553
-
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:894
-
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:1032
+
const uint16_t kGicableBits
Definition: IRremoteESP8266.h:1117
+
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:1583
+
decode_type_t
Enumerator for defining and numbering of supported IR protocol.
Definition: IRremoteESP8266.h:917
+
const uint16_t kCarrierAcBits
Definition: IRremoteESP8266.h:1058
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
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
-
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:1166
-
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:1210
-
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1244
+
const uint16_t kMultibracketsBits
Definition: IRremoteESP8266.h:1198
+
const uint16_t kSharpAcBits
Definition: IRremoteESP8266.h:1242
+
const uint16_t kWhynterBits
Definition: IRremoteESP8266.h:1276
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
-
uint8_t overflow
Definition: IRrecv.h:78
+
uint8_t overflow
Definition: IRrecv.h:85
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 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:677
-
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:1017
-
irparams_t * irparams_save
Definition: IRrecv.h:157
-
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:1152
+
const uint16_t kAirwellBits
Definition: IRremoteESP8266.h:1043
+
irparams_t * irparams_save
Definition: IRrecv.h:164
+
const uint16_t kMitsubishiACBits
Definition: IRremoteESP8266.h:1184
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
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
-
const uint16_t kArrisBits
Definition: IRremoteESP8266.h:1028
-
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:1222
-
const uint16_t kTechnibelAcBits
Definition: IRremoteESP8266.h:1069
+
const uint16_t kArrisBits
Definition: IRremoteESP8266.h:1054
+
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:1252
+
const uint16_t kTechnibelAcBits
Definition: IRremoteESP8266.h:1095
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
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
-
const uint16_t kVoltasBits
Definition: IRremoteESP8266.h:1249
+
const uint16_t kVoltasBits
Definition: IRremoteESP8266.h:1281
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 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:954
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
-
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:1185
+
const uint16_t kRC5XBits
Definition: IRremoteESP8266.h:1217
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
-
uint16_t rawlen
Definition: IRrecv.h:77
+
uint16_t rawlen
Definition: IRrecv.h:84
const uint8_t kUseDefTol
Definition: IRrecv.h:36
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
-
Class for receiving IR messages.
Definition: IRrecv.h:114
-
uint16_t bufsize
Definition: IRrecv.h:73
-
Results returned from the decoder.
Definition: IRrecv.h:92
-
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:1647
-
const uint16_t kBoseBits
Definition: IRremoteESP8266.h:1254
+
Class for receiving IR messages.
Definition: IRrecv.h:121
+
uint16_t bufsize
Definition: IRrecv.h:80
+
Results returned from the decoder.
Definition: IRrecv.h:99
+
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:1677
+
const uint16_t kBoseBits
Definition: IRremoteESP8266.h:1286
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
-
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:1029
+
const uint16_t kCoolixBits
Definition: IRremoteESP8266.h:1055
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
-
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:1040
-
uint64_t data
Definition: IRrecv.h:85
-
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:1190
-
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:1137
-
uint16_t * rawbuf
Definition: IRrecv.h:74
-
Information for the interrupt handler.
Definition: IRrecv.h:69
-
uint16_t getBufSize(void)
Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.
Definition: IRrecv.cpp:437
-
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:1204
-
bool repeat
Definition: IRrecv.h:110
-
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
-
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1238
+
const uint16_t kCoronaAcBitsShort
Definition: IRremoteESP8266.h:1066
+
uint64_t data
Definition: IRrecv.h:92
+
const uint16_t kSamsung36Bits
Definition: IRremoteESP8266.h:1222
+
const uint16_t kMagiquestBits
Definition: IRremoteESP8266.h:1169
+
uint16_t * rawbuf
Definition: IRrecv.h:81
+
Information for the interrupt handler.
Definition: IRrecv.h:76
+
uint16_t getBufSize(void)
Obtain the maximum number of entries possible in the capture buffer. i.e. It's size.
Definition: IRrecv.cpp:451
+
const uint16_t kSanyoLC7461Bits
Definition: IRremoteESP8266.h:1236
+
bool repeat
Definition: IRrecv.h:117
+
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
+
const uint16_t kTrotecBits
Definition: IRremoteESP8266.h:1270
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
const uint8_t kIdleState
Definition: IRrecv.h:31
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
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
-
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
+
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 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:1415
-
const uint16_t kEliteScreensBits
Definition: IRremoteESP8266.h:1084
-
uint8_t recvpin
Definition: IRrecv.h:70
-
uint16_t timer
Definition: IRrecv.h:72
+
const uint16_t kEliteScreensBits
Definition: IRremoteESP8266.h:1110
+
uint8_t recvpin
Definition: IRrecv.h:77
+
uint16_t timer
Definition: IRrecv.h:79
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
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 success
Definition: IRrecv.h:84
+
bool success
Definition: IRrecv.h:91
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
-
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:1082
-
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:1241
-
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:1217
-
const uint16_t kHaierAC176Bits
Definition: IRremoteESP8266.h:1105
+
const uint16_t kElectraAcBits
Definition: IRremoteESP8266.h:1108
+
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:1271
+
const uint16_t kSonyMinBits
Definition: IRremoteESP8266.h:1249
+
const uint16_t kHaierAC176Bits
Definition: IRremoteESP8266.h:1131
const uint8_t kStopState
Definition: IRrecv.h:34
-
uint16_t rawlen
Definition: IRrecv.h:108
+
uint16_t rawlen
Definition: IRrecv.h:115
const uint16_t kMaxTimeoutMs
Definition: IRrecv.h:49
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
-
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:1048
+
const uint16_t kDaikin2Bits
Definition: IRremoteESP8266.h:1074
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
-
const uint16_t kHitachiAc1Bits
Definition: IRremoteESP8266.h:1111
+
const uint16_t kHitachiAc1Bits
Definition: IRremoteESP8266.h:1137
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:424
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
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
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
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
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
-
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:1173
-
const uint16_t kMilesTag2ShotBits
Definition: IRremoteESP8266.h:1251
-
decode_type_t decode_type
Definition: IRrecv.h:94
-
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:1177
+
const uint16_t kPanasonicBits
Definition: IRremoteESP8266.h:1205
+
const uint16_t kMilesTag2ShotBits
Definition: IRremoteESP8266.h:1283
+
decode_type_t decode_type
Definition: IRrecv.h:101
+
const uint16_t kPanasonicAcBits
Definition: IRremoteESP8266.h:1209
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
const uint64_t kRepeat
Definition: IRrecv.h:26
-
void setTolerance(const uint8_t percent=kTolerance)
Set the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:450
-
const uint16_t kXmpBits
Definition: IRremoteESP8266.h:1246
-
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
+
void setTolerance(const uint8_t percent=kTolerance)
Set the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:464
+
const uint16_t kXmpBits
Definition: IRremoteESP8266.h:1278
+
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:755
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 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
-
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:1053
-
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:413
-
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
-
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:1093
+
const uint16_t kDaikin160Bits
Definition: IRremoteESP8266.h:1079
+
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:427
+
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
+
const uint16_t kGoodweatherBits
Definition: IRremoteESP8266.h:1119
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
-
void enableIRIn(const bool pullup=false)
Set up and (re)start the IR capture mechanism.
Definition: IRrecv.cpp:342
-
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:1059
-
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:1261
+
void enableIRIn(const bool pullup=false)
Set up and (re)start the IR capture mechanism.
Definition: IRrecv.cpp:349
+
const uint16_t kDaikin152Bits
Definition: IRremoteESP8266.h:1085
+
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:1291
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
-
const uint16_t kKelonBits
Definition: IRremoteESP8266.h:1125
+
const uint16_t kKelonBits
Definition: IRremoteESP8266.h:1155
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
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 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
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
const uint8_t kTimeoutMs
Definition: IRrecv.h:47
-
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:1451
+
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:1481
const uint8_t kMarkState
Definition: IRrecv.h:32
-
void setUnknownThreshold(const uint16_t length)
Set the minimum length we will consider for reporting UNKNOWN message types.
Definition: IRrecv.cpp:442
-
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:1219
+
void setUnknownThreshold(const uint16_t length)
Set the minimum length we will consider for reporting UNKNOWN message types.
Definition: IRrecv.cpp:456
+
const uint16_t kSymphonyBits
Definition: IRremoteESP8266.h:1251
+
const uint16_t kHitachiAc296Bits
Definition: IRremoteESP8266.h:1147
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
-
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:1186
-
const uint16_t kStateSizeMax
Definition: IRrecv.h:60
-
Results from a data match.
Definition: IRrecv.h:83
+
const uint16_t kRC6Mode0Bits
Definition: IRremoteESP8266.h:1218
+
const uint16_t kStateSizeMax
Definition: IRrecv.h:67
+
Results from a data match.
Definition: IRrecv.h:90
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
-
uint8_t rcvstate
Definition: IRrecv.h:71
-
const uint16_t kMetzBits
Definition: IRremoteESP8266.h:1138
+
uint8_t rcvstate
Definition: IRrecv.h:78
+
const uint16_t kMetzBits
Definition: IRremoteESP8266.h:1170
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
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(void)
Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the...
Definition: IRrecv.cpp:327
-
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(void)
Class destructor Cleans up after the object is no longer needed. e.g. Frees up all memory used by the...
Definition: IRrecv.cpp:334
+
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 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 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
-
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:1164
-
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:1076
-
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:1034
+
const uint16_t kMitsubishiHeavy152Bits
Definition: IRremoteESP8266.h:1196
+
const uint16_t kDoshishaBits
Definition: IRremoteESP8266.h:1102
+
const uint16_t kCarrierAc40Bits
Definition: IRremoteESP8266.h:1060
const uint16_t kStartOffset
Definition: IRrecv.h:20
-
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:1023
+
const uint16_t kAmcorBits
Definition: IRremoteESP8266.h:1049
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(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:266
+
IRrecv(const uint16_t recvpin, const uint16_t bufsize=kRawBuf, const uint8_t timeout=kTimeoutMs, const bool save_buffer=false, const uint8_t timer_num=kDefaultESP32Timer)
Class constructor Args:
Definition: IRrecv.cpp:267
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
-
volatile uint16_t * rawbuf
Definition: IRrecv.h:107
+
volatile uint16_t * rawbuf
Definition: IRrecv.h:114
const uint8_t kTolerance
Definition: IRrecv.h:35
bool decodeSharp(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpBits, const bool strict=true, const bool expansion=true)
Decode the supplied Sharp message. Status: STABLE / Working fine.
Definition: ir_Sharp.cpp:157
-
uint16_t used
Definition: IRrecv.h:86
-
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:1174
-
uint32_t address
Definition: IRrecv.h:101
+
uint16_t used
Definition: IRrecv.h:93
+
const uint32_t kPanasonicManufacturer
Definition: IRremoteESP8266.h:1206
+
uint32_t address
Definition: IRrecv.h:108
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
-
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:1147
-
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:1128
+
const uint16_t kMitsubishiBits
Definition: IRremoteESP8266.h:1179
+
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:1158
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 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
-
const uint16_t kSamsungAcBits
Definition: IRremoteESP8266.h:1192
+
const uint16_t kSamsungAcBits
Definition: IRremoteESP8266.h:1224
const uint16_t kUnknownThreshold
Definition: IRrecv.h:28
-
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:1140
+
const uint16_t kMideaBits
Definition: IRremoteESP8266.h:1172
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
-
const uint16_t kKelvinatorBits
Definition: IRremoteESP8266.h:1127
+
const uint16_t kKelvinatorBits
Definition: IRremoteESP8266.h:1159
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 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
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
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
-
const uint16_t kNECBits
Definition: IRremoteESP8266.h:1169
-
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:1071
-
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:1099
-
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:1159
-
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1247
-
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:1142
-
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
+
const uint16_t kNECBits
Definition: IRremoteESP8266.h:1201
+
const uint16_t kDenonBits
Definition: IRremoteESP8266.h:1097
+
const uint16_t kHaierACBits
Definition: IRremoteESP8266.h:1125
+
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:1189
+
const uint16_t kZepealBits
Definition: IRremoteESP8266.h:1279
+
const uint16_t kMidea24Bits
Definition: IRremoteESP8266.h:1174
+
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 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
-
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:1171
-
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1242
+
const uint16_t kNeoclimaBits
Definition: IRremoteESP8266.h:1203
+
const uint16_t kWhirlpoolAcBits
Definition: IRremoteESP8266.h:1274
bool decodeSharpAc(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kSharpAcBits, const bool strict=true)
Decode the supplied Sharp A/C message. Status: STABLE / Known working.
Definition: ir_Sharp.cpp:947
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 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 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
-
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:1036
-
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:1181
-
uint16_t bits
Definition: IRrecv.h:106
-
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:1096
-
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:735
-
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:1124
-
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:1129
-
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:1056
-
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:1019
-
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:1102
-
const uint16_t kTrumaBits
Definition: IRremoteESP8266.h:1240
-
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:1224
+
const uint16_t kCarrierAc64Bits
Definition: IRremoteESP8266.h:1062
+
const uint16_t kPioneerBits
Definition: IRremoteESP8266.h:1213
+
uint16_t bits
Definition: IRrecv.h:113
+
const uint16_t kGreeBits
Definition: IRremoteESP8266.h:1122
+
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:733
+
const uint16_t kJvcBits
Definition: IRremoteESP8266.h:1154
+
const uint16_t kLasertagBits
Definition: IRremoteESP8266.h:1161
+
const uint16_t kDaikin128Bits
Definition: IRremoteESP8266.h:1082
+
const uint16_t kAiwaRcT501Bits
Definition: IRremoteESP8266.h:1045
+
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:1132
+
const uint16_t kTrumaBits
Definition: IRremoteESP8266.h:1272
+
const uint16_t kTecoBits
Definition: IRremoteESP8266.h:1256
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
-
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1229
+
const uint16_t kToshibaACBits
Definition: IRremoteESP8266.h:1261
+
const uint16_t kKelon168Bits
Definition: IRremoteESP8266.h:1157
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
-
const uint16_t kDaikinBits
Definition: IRremoteESP8266.h:1043
-
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:1202
-
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:1108
-
const uint16_t kSanyoAc88Bits
Definition: IRremoteESP8266.h:1199
-
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:1115
+
const uint16_t kDaikinBits
Definition: IRremoteESP8266.h:1069
+
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:1232
+
const uint16_t kHitachiAcBits
Definition: IRremoteESP8266.h:1134
+
const uint16_t kSanyoAc88Bits
Definition: IRremoteESP8266.h:1231
+
const uint16_t kHitachiAc3Bits
Definition: IRremoteESP8266.h:1141
const uint16_t kRawBuf
Definition: IRrecv.h:25
-
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:527
-
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
-
uint8_t getTolerance(void)
Get the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:456
-
const uint16_t kDishBits
Definition: IRremoteESP8266.h:1074
-
uint16_t compare(const uint16_t oldval, const uint16_t newval)
Compare two tick values.
Definition: IRrecv.cpp:1279
-
uint32_t command
Definition: IRrecv.h:102
-
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:1089
-
uint64_t value
Definition: IRrecv.h:100
-
const uint16_t kAirtonBits
Definition: IRremoteESP8266.h:1015
-
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:1026
-
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:1112
+
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:541
+
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
+
uint8_t getTolerance(void)
Get the base tolerance percentage for matching incoming IR messages.
Definition: IRrecv.cpp:470
+
const uint16_t kDishBits
Definition: IRremoteESP8266.h:1100
+
uint16_t compare(const uint16_t oldval, const uint16_t newval)
Compare two tick values.
Definition: IRrecv.cpp:1309
+
uint32_t command
Definition: IRrecv.h:109
+
const uint16_t kFujitsuAcBits
Definition: IRremoteESP8266.h:1115
+
uint64_t value
Definition: IRrecv.h:107
+
const uint16_t kAirtonBits
Definition: IRremoteESP8266.h:1041
+
const uint16_t kArgoBits
Definition: IRremoteESP8266.h:1052
+
const uint16_t kHitachiAc2StateLength
Definition: IRremoteESP8266.h:1138
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:206
+
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
const uint16_t kFooter
Definition: IRrecv.h:19
-
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:1168
-
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:1136
+
const uint16_t kNikaiBits
Definition: IRremoteESP8266.h:1200
+
const uint16_t kLutronBits
Definition: IRremoteESP8266.h:1168
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
-
uint8_t timeout
Definition: IRrecv.h:79
+
uint8_t timeout
Definition: IRrecv.h:86
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 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 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
const uint16_t kRawTick
Definition: IRrecv.h:37
-
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:1841
-
void resume(void)
Resume collection of received IR data.
Definition: IRrecv.cpp:398
-
const uint16_t kCoolix48Bits
Definition: IRremoteESP8266.h:1030
+
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:1871
+
void resume(void)
Resume collection of received IR data.
Definition: IRrecv.cpp:412
+
const uint16_t kCoolix48Bits
Definition: IRremoteESP8266.h:1056
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
-
const uint16_t kEcoclimBits
Definition: IRremoteESP8266.h:1077
-
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:1102
-
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:1338
-
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:1121
+
const uint16_t kEcoclimBits
Definition: IRremoteESP8266.h:1103
+
const uint16_t kHaierACYRW02Bits
Definition: IRremoteESP8266.h:1128
+
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:1368
+
const uint16_t kHitachiAc424Bits
Definition: IRremoteESP8266.h:1151
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
const uint16_t kMarkExcess
Definition: IRrecv.h:24
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:1382
-
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
+
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 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:633
-
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:1131
-
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:1208
+
const uint16_t kLegoPfBits
Definition: IRremoteESP8266.h:1163
+
const uint16_t kSharpBits
Definition: IRremoteESP8266.h:1240
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
-
uint8_t _tolerance
Definition: IRrecv.h:158
-
const uint8_t kDefaultESP32Timer
Definition: IRrecv.h:56
-
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:1734
+
uint8_t _tolerance
Definition: IRrecv.h:165
+
const uint8_t kDefaultESP32Timer
Definition: IRrecv.h:59
+
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:1764
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
-
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:463
+
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:477
bool decodeHitachiAC1(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kHitachiAc1Bits, const bool strict=true)
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:132
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
-
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:1188
-
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1245
-
const uint16_t kTranscoldBits
Definition: IRremoteESP8266.h:1235
-
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:1122
+
const uint16_t kRCMMBits
Definition: IRremoteESP8266.h:1220
+
const uint8_t kVestelAcBits
Definition: IRremoteESP8266.h:1277
+
const uint16_t kTranscoldBits
Definition: IRremoteESP8266.h:1267
+
const uint16_t kInaxBits
Definition: IRremoteESP8266.h:1152
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 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
-
uint16_t _unknown_threshold
Definition: IRrecv.h:163
-
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:1062
-
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
-
void disableIRIn(void)
Stop collection of any received IR data. Disable any timers and interrupts.
Definition: IRrecv.cpp:381
-
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
+
uint16_t _unknown_threshold
Definition: IRrecv.h:170
+
const uint16_t kDaikin176Bits
Definition: IRremoteESP8266.h:1088
+
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:848
+
void disableIRIn(void)
Stop collection of any received IR data. Disable any timers and interrupts.
Definition: IRrecv.cpp:395
+
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
bool decodeToshibaAC(decode_results *results, uint16_t offset=kStartOffset, const uint16_t nbits=kToshibaACBits, const bool strict=true)
Decode the supplied Toshiba A/C message. Status: STABLE / Working.
Definition: ir_Toshiba.cpp:505
-
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:1115
-
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:1189
-
uint8_t _timer_num
Definition: IRrecv.h:160
-
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:1050
-
const uint16_t kTeknopointBits
Definition: IRremoteESP8266.h:1227
-
const uint16_t kPanasonicAc32Bits
Definition: IRremoteESP8266.h:1180
-
volatile irparams_t * _getParamsPtr(void)
Unit test helper to get access to the params structure.
Definition: IRrecv.cpp:1962
-
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:1065
-
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:1155
-
const uint16_t kSanyoAcBits
Definition: IRremoteESP8266.h:1197
-
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:1158
-
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:1079
-
uint8_t state[kStateSizeMax]
Definition: IRrecv.h:104
-
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:1300
+
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:1145
+
const uint16_t kSamsungBits
Definition: IRremoteESP8266.h:1221
+
uint8_t _timer_num
Definition: IRrecv.h:167
+
const uint16_t kDaikin64Bits
Definition: IRremoteESP8266.h:1076
+
const uint16_t kTeknopointBits
Definition: IRremoteESP8266.h:1259
+
const uint16_t kPanasonicAc32Bits
Definition: IRremoteESP8266.h:1212
+
volatile irparams_t * _getParamsPtr(void)
Unit test helper to get access to the params structure.
Definition: IRrecv.cpp:1992
+
const uint16_t kDaikin216Bits
Definition: IRremoteESP8266.h:1091
+
const uint16_t kMitsubishi136Bits
Definition: IRremoteESP8266.h:1187
+
const uint16_t kSanyoAcBits
Definition: IRremoteESP8266.h:1229
+
const uint16_t kMitsubishi112Bits
Definition: IRremoteESP8266.h:1190
+
const uint16_t kEpsonBits
Definition: IRremoteESP8266.h:1105
+
uint8_t state[kStateSizeMax]
Definition: IRrecv.h:111
+
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:1330
const uint8_t kSpaceState
Definition: IRrecv.h:33
-
const uint16_t kLgBits
Definition: IRremoteESP8266.h:1133
-
uint8_t _validTolerance(const uint8_t percentage)
Convert the tolerance percentage into something valid.
Definition: IRrecv.cpp:1093
+
const uint16_t kLgBits
Definition: IRremoteESP8266.h:1165
+
uint8_t _validTolerance(const uint8_t percentage)
Convert the tolerance percentage into something valid.
Definition: IRrecv.cpp:1123
const uint16_t kHeader
Definition: IRrecv.h:18
const uint32_t kFnvBasis32
Definition: IRrecv.h:53
diff --git a/docs/doxygen/html/IRremoteESP8266_8h.html b/docs/doxygen/html/IRremoteESP8266_8h.html index cb0a2a41c..bd2654295 100644 --- a/docs/doxygen/html/IRremoteESP8266_8h.html +++ b/docs/doxygen/html/IRremoteESP8266_8h.html @@ -224,7 +224,10 @@ AIRTON, COOLIX48,
-  kLastDecodeType = COOLIX48 +  HITACHI_AC264, +KELON168, +HITACHI_AC296, +kLastDecodeType = HITACHI_AC296
}  Enumerator for defining and numbering of supported IR protocol. More...
@@ -442,6 +445,14 @@   const uint16_t kHitachiAc3MinBits = kHitachiAc3MinStateLength * 8   +const uint16_t kHitachiAc264StateLength = 33 +  +const uint16_t kHitachiAc264Bits = kHitachiAc264StateLength * 8 +  +const uint16_t kHitachiAc296StateLength = 37 +  +const uint16_t kHitachiAc296Bits = kHitachiAc296StateLength * 8 +  const uint16_t kHitachiAc344StateLength = 43   const uint16_t kHitachiAc344Bits = kHitachiAc344StateLength * 8 @@ -458,6 +469,10 @@   const uint16_t kKelonBits = 48   +const uint16_t kKelon168StateLength = 21 +  +const uint16_t kKelon168Bits = kKelon168StateLength * 8 +  const uint16_t kKelvinatorStateLength = 16   const uint16_t kKelvinatorBits = kKelvinatorStateLength * 8 @@ -860,6 +875,9 @@

RHOSS  AIRTON  COOLIX48  +HITACHI_AC264  +KELON168  +HITACHI_AC296  kLastDecodeType  @@ -2166,6 +2184,62 @@

+ + + +

◆ kHitachiAc264Bits

+ +
+
+ + + + +
const uint16_t kHitachiAc264Bits = kHitachiAc264StateLength * 8
+
+ +
+
+ +

◆ kHitachiAc264StateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc264StateLength = 33
+
+ +
+
+ +

◆ kHitachiAc296Bits

+ +
+
+ + + + +
const uint16_t kHitachiAc296Bits = kHitachiAc296StateLength * 8
+
+ +
+
+ +

◆ kHitachiAc296StateLength

+ +
+
+ + + + +
const uint16_t kHitachiAc296StateLength = 37
+
+
@@ -2390,6 +2464,34 @@

+ + + +

◆ kKelon168Bits

+ +
+
+ + + + +
const uint16_t kKelon168Bits = kKelon168StateLength * 8
+
+ +
+
+ +

◆ kKelon168StateLength

+ +
+
+ + + + +
const uint16_t kKelon168StateLength = 21
+
+
@@ -4257,8 +4359,8 @@

const uint16_t kSanyoLC7461CommandBits
Definition: IRremoteESP8266.h:1203
-
const uint16_t kSanyoLC7461AddressBits
Definition: IRremoteESP8266.h:1202
+
const uint16_t kSanyoLC7461CommandBits
Definition: IRremoteESP8266.h:1235
+
const uint16_t kSanyoLC7461AddressBits
Definition: IRremoteESP8266.h:1234